我收到错误:
未为约束
准备视图层次结构
我运行下面的代码时遇到的每个约束,它位于UIView
类中:
func addIcon(iconImage: UIImage) {
// Creating imageView
var icon = UIImageView()
icon.image = iconImage
icon.contentMode = .ScaleAspectFit
// Adding to self
self.addSubview(icon)
// Setting constraints
setTranslatesAutoresizingMaskIntoConstraints(false)
var leading = NSLayoutConstraint(
item: icon,
attribute: .Leading,
relatedBy: .Equal,
toItem: self,
attribute: .Leading,
multiplier: 1,
constant: 8)
icon.addConstraint(leading)
var centerY = NSLayoutConstraint(
item: icon,
attribute: .CenterY,
relatedBy: .Equal,
toItem: self,
attribute: .CenterY,
multiplier: 1,
constant: 0)
icon.addConstraint(centerY)
var top = NSLayoutConstraint(
item: icon,
attribute: .Top,
relatedBy: .GreaterThanOrEqual,
toItem: self,
attribute: .Top,
multiplier: 1,
constant: 8)
icon.addConstraint(top)
var bottom = NSLayoutConstraint(
item: icon,
attribute: .Bottom,
relatedBy: .GreaterThanOrEqual,
toItem: self,
attribute: .Bottom,
multiplier: 1,
constant: 8)
icon.addConstraint(bottom)
var width = NSLayoutConstraint(
item: icon,
attribute: .Width,
relatedBy: .Equal,
toItem: nil,
attribute: .NotAnAttribute,
multiplier: 1,
constant: 20)
icon.addConstraint(width)
}
有人知道我做错了什么吗?
任何想法将不胜感激!
答案 0 :(得分:1)
感谢roronoa zorro和pe60t0,我发现我应该在相关视图上执行此操作,而不仅仅是scrollview is (375.0, 356.5)
,所以:setTranslatesAutoresizingMaskIntoConstraints(false)
。
还应在创建视图时添加约束,因此我调用覆盖icon.setTranslatesAutoresizingMaskIntoConstraints(false)
并将其添加到那里
最后,我应该将约束添加到superview,而不是我正在“制作约束”的视图。因此,我应该写layoutSubviews()
而不是icon.addConstraint(top)
。