gpt4 book ai didi

objective-c - 使用 contentLayoutGuide 进行约束

转载 作者:太空狗 更新时间:2023-10-30 03:48:32 26 4
gpt4 key购买 nike

在观看了 WWDC 关于新 UI 高级功能的 session 后,我尝试在 OSX 10.10 中使用带有新 Vibrant 主题的 NSTextView。我的 TextView 没有放置在与标题栏相邻的位置,因此我将内容 View 设置为完全尺寸,这样我就可以将 TextView 放在标题栏下方。

我的问题是我在 TextView 和标题栏之间有一个 NSView,它应该直接放在标题栏下方,但我无法获得自动布局来为我执行此操作。在视频中,他们使用 NSWindow 中的新 contentLayoutGuide 属性提供了此示例代码:

NSLayoutConstraint *topEdgeConstraint = [NSLayoutConstraint constraintWithItem:myView attribute: NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:window.contentLayoutGuide attribute:NSLayoutAttributeTop];

但是我无法让它工作,每当我尝试安装 Xcode 给我的约束时

Unable to install constraint on view. Does the constraint reference something from outside the subtree of the view? That's illegal.

我知道示例中使用的窗口属性不在 View 的子树中,因为 View 位于窗口内,但我应该如何访问 contentLayoutGuide 属性?

目前我正在尝试在子类 NSWindow-awakeFromNib 方法中添加约束。可能是错误的方法?

提前致谢

最佳答案

在 Yosemite 中,约束现在有一个“事件”属性,您可以设置该属性以使约束处于事件状态,而无需将其放置在共同的祖先上。我认为它是专门为这种你不知道共同祖先的情况而创建的。

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem: myView attribute: NSLayoutAttributeTop relatedBy: NSLayoutRelationEqual toItem: window.contentLayoutGuide attribute: NSLayoutAttributeTop];
constraint.active = YES

关于objective-c - 使用 contentLayoutGuide 进行约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28466552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com