【发布时间】:2015-11-21 14:36:41
【问题描述】:
类似问题:How to resize a parent view based on the size of subviews layouted with Autolayout
我有一个 NSStackView 加载 DisclosureViewControllers(NSViewController 子类),就像在 Apple 示例 InfoBarStackView 中一样。
那些可以扩展和缩回任意高度的视图。
我希望包含NSStackView 的父视图根据NSStackView 的内容调整其高度。在 Apple 示例中有效。
但是,不幸的是,Apple 正在调整 NSWindow 的大小,而我正在使用 CCNStatusItem (CCNStatusItem Github),这是一个附加到 Apple 菜单栏中的状态项的视图。该窗口在加载时会根据NSStackView 的内容调整大小,但在内容更改时不会调整大小。
当我展开一个部分时,内容会溢出并在视图的底部边缘被剪裁。
我经历了所有的限制并试图准确地重现它,但无法让它发挥作用。在 Apple 示例中,他们以编程方式添加所有内容,而我在 Interface Builder 中添加了 NSStackView。
我的问题是:我在 Interface Builder 中有哪些约束(具有哪些优先级),以便父视图(窗口)根据堆栈视图的内容动态调整大小? 我是否必须调用视图的某些方法才能使其工作?
如果我错过了提供一些必要的信息,请告诉我。
更新
接受的答案是正确的方法。这是结果。我的 CCNStatusItem 的分叉版本可以在https://github.com/julianvogels/CCNStatusItem.git找到。
【问题讨论】:
标签: objective-c xcode cocoa autolayout nsstackview