我试图以这种方式向图像视图和超级视图添加约束:
let newConstraint = NSLayoutConstraint(
item: self.image,
attribute: NSLayoutAttribute.Top,
relatedBy: NSLayoutRelation.Equal,
toItem: self.topLayoutGuide,
attribute: NSLayoutAttribute.Bottom,
multiplier: 1,
constant: 200)
image.addConstraint(newConstraint)
当我运行我的应用程序时,它会以此输出崩溃:
无法在视图上安装约束。约束是否引用了视图子树之外的内容?这是非法的。
有什么想法吗?
答案 0 :(得分:2)
将约束添加到self.view
而不是self.image
:
self.view.addConstraint(newConstraint)
self.topLayoutGuide
是self.view
的子元素,而不是self.image
。并且正如错误所述,在约束中引用来自安装约束的视图的子树之外的东西是非法的。
换句话说,self.image
和self.topLayoutGuide
是视图层次结构中的兄弟,您必须将约束添加到这些兄弟姐妹的“父亲”(self.view
)。
答案 1 :(得分:0)