我在Interface Builder中的Mac OS X项目中设置了约束,如下所示:
H:|-(61)-[webView]
我想从我的代码中修改那个IB约束。我能够添加另一个约束,然后控制台抱怨冲突,如下所示:
Unable to simultaneously satisfy constraints:
(
"<NSLayoutConstraint:0x102112320 H:|-(61)-[WebView:0x10230a1c0] (Names: '|':NSView:0x102362e90 )>",
"<NSLayoutConstraint:0x10063bab0 H:|-(0)-[WebView:0x10230a1c0] (Names: '|':NSView:0x102362e90 )>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x102112320 H:|-(61)-[WebView:0x10230a1c0] (Names: '|':NSView:0x102362e90 )>
Apple - Mac OS X - Cocoa Auto Layout Guide处的Apple文档指出“约束基本上是不可变的......它在算法上很重要。更改常量比删除约束并添加新约束更有效......”< / p>
如何从代码中修改前导空间约束?
答案 0 :(得分:2)
约束是IB中其他对象的对象,因此您可以在控制器(或任何其他合适的对象)中创建出口并将约束链接到它。
然后,在您的代码中,您可以更改约束的常量部分。
您还可以以编程方式删除约束并添加另一个约束,以适应不仅仅是要修改的常量部分的情况。