macos - 如何修改 Mac OS X Cocoa 布局约束

标签 macos cocoa autolayout

我在 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 文档位于 Apple - Mac OS X - Cocoa Auto Layout Guide指出“约束大多是不可变的......这在算法上很重要。更改常量比删除约束并添加新约束要有效得多......”

如何修改代码中的前导空间约束?

最佳答案

约束是像 IB 中的其他对象一样的对象,因此您可以在 Controller (或任何其他合适的对象)中创建一个 socket 并将约束链接到它。

然后,您可以在代码中更改约束的常量部分。

您还可以通过编程方式删除约束并添加另一个约束,以防您想要修改的不仅仅是常量部分。

关于macos - 如何修改 Mac OS X Cocoa 布局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15686780/

相关文章:

cocoa - 菜单隐藏时,NSMenuItem 键等效项不起作用

ios - 自动布局在第一次启动时隐藏图像

ios - 如何在代码中创建与 @"H:|-10-[view]"完全相同的 NSLayoutConstraint 对象?

python - python 中的错误 - 不明白

macos - 如何在 Mac OS X 上启动 PostgreSQL 服务器?

objective-c - 动态库未在 Cocoa 应用程序中卸载

ios - 自动布局和同心较小的嵌套 UIImageView

python - 如何在 mac osx 上的子进程中打开文件

macos - 如何阻止 NSTextField 中的某些键盘布局?

cocoa - 在 Cocoa 中打开任何文件