我正在使用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))
}
}
答案 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)
])