Swift:无法将约束添加到ImageView

时间:2020-03-13 10:02:53

标签: ios swift constraints

我正在使用ImageView在应用程序的菜单栏中添加一个UberLogo。但是,徽标将朝单元格的左上角平移。我尝试使用在线视频将其重新定位到其包含的单元格中。 addConstraintWithFormat正在工作,但add Constraint无法工作。有人可以帮忙吗?谢谢!

class MenuCell: BaseCell {

    let imageView: UIImageView = {
        let iv = UIImageView()
        iv.image = UIImage(named: "UberLogo")
        return iv
    }()


    override func setupViews() {
        super.setupViews()

        addSubview(imageView)
        imageView.translatesAutoresizingMaskIntoConstraints = false
        addConstraintsWithFormat("H:|[v0(28)]|", views: imageView)
        addConstraintsWithFormat("V:|[v0(28)]|", views: imageView)
        addConstraint(NSLayoutConstraint(item: imageView, attribute: .centerX, relatedBy: .equal, toItem: self, attribute: .centerX, multiplier: 1, constant: 0))
        addConstraint(NSLayoutConstraint(item: imageView, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1, constant: 0))
    }
}

1 个答案:

答案 0 :(得分:0)

根据addConstraint文档:

在为iOS 8.0或更高版本进行开发时,请将约束的isActive属性设置为true,而不是直接调用addConstraint(_ :)方法。 isActive属性会自动在正确的视图中添加和删除约束。

此外,NSLayoutConstraint具有以下功能:

class func activate(_ constraints: [NSLayoutConstraint])

尝试像这样激活约束,看看是否有帮助:

addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
  imageView.heightAnchor.constraint(equalToConstant: 28),
  imageView.widthAnchor.constraint(equalToConstant: 28),
  imageView.centerXAnchor.constraint(equalTo: self.centerXAnchor),
  imageView.centerYAnchor.constraint(equalTo: self.centerYAnchor)
])
相关问题