如何修改 Mac OS X Cocoa 布局约束
Posted
技术标签:
【中文标题】如何修改 Mac OS X Cocoa 布局约束【英文标题】:How can I modify a Mac OS X Cocoa Layout Constraint 【发布时间】:2013-03-28 16:10:31 【问题描述】:我在 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 文档指出“约束大多是不可变的......它在算法上很重要。更改常量比删除约束并添加新约束更有效......”
如何从我的代码中修改前导空格约束?
【问题讨论】:
【参考方案1】:约束是与 IB 中的其他对象一样的对象,因此您可以在控制器(或任何其他合适的对象)中创建一个出口并将约束链接到它。
然后,您可以在代码中更改约束的常量部分。
您还可以以编程方式删除约束并添加另一个约束,以应对不只是要修改的常量部分的情况。
【讨论】:
以上是关于如何修改 Mac OS X Cocoa 布局约束的主要内容,如果未能解决你的问题,请参考以下文章
[Mac OS X Cocoa编程]如何获取其他应用程序的窗体标题以及相关信息?
我如何在 Mac OS X 上判断我是不是安装了 Carbon 或 Cocoa 版本的 Qt?