问题标签 [nsstackview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 自动布局:当高度动态改变时,NSStackView 不会调整父视图的大小
类似的问题:如何根据使用 Autolayout 布局的子视图的大小调整父视图的大小
我有一个 NSStackView 加载DisclosureViewController
s (NSViewController 子类),就像在 Apple Example InfoBarStackView中一样。
那些可以扩展和缩回任意高度的视图。我希望包含 的父视图NSStackView
根据NSStackView
. 在有效的 Apple 示例中。
然而,不幸的是,Apple 正在调整 NSWindow 的大小,而我正在使用CCNStatusItem
( CCNStatusItem Github ),这是一个附加到 Apple 菜单栏中状态项的视图。该窗口NSStackView
在加载时会根据内容调整大小,但在内容更改时不会调整大小。
当我展开一个部分时,内容会溢出并在视图的底部边缘被剪裁。
我经历了所有的限制并试图准确地重现它,但无法让它发挥作用。在 Apple 示例中,他们以编程方式添加所有内容,而我在 Interface Builder 中添加了 NSStackView。
我的问题是:我在 Interface Builder 中有哪些约束(具有哪些优先级),以便父视图(窗口)根据堆栈视图的内容动态调整大小?我是否必须调用视图的某些方法才能使其工作?
如果我错过了提供一些必要的信息,请告诉我。
更新
接受的答案是正确的方法。这是结果。我的 CCNStatusItem 的分叉版本可以在https://github.com/julianvogels/CCNStatusItem.git找到
macos - 在 NSStackView 中拖动视图以重新排列顺序
是否可以通过拖动子视图来更改NSStackView中的视图顺序,就像我们在 NSTableView 中所做的那样?
objective-c - NSStackView 和内容拥抱优先级
NSStackView
与常规相比,有 2 个额外的优先级NSView
,即clippingResistancePriority
和huggingPriority.
文档提供了一些合理的解释它们的用途和作用。
但是 4 个优先事项有点过头了。
现在,在上述文档中,他们提到:
堆栈视图没有内在的内容大小,也没有可配置的内容压缩阻力。在堆栈视图上调用该
setContentCompressionResistancePriority:forOrientation:
方法无效。
然而,contentHuggingPriority
被留在了阴影中。似乎NSStackView
对这个也没有反应——或者至少我没能做到。
有人可以确认或反驳这一点吗?
swift - 以编程方式将 InterfaceBuilder 创建的视图添加到 NSStackView 将它们压缩到 0 高度
我一直在尝试将我在 Interface Builder 中创建的自定义视图添加到NSStackView
,但失败得很惨。
这是我的视图控制器。它目前除了从 NIB 初始化视图之外什么都不做:
这是我尝试将新创建的视图添加到堆栈视图的方式(这发生在应用程序委托中):
当我在将创建视图的框架添加到堆栈视图之前打印它时,它具有正确的大小。如果我之后打印它,它会被压缩到零高度。我怀疑有一些我不理解的自动调整大小的魔法正在发生,但我无法修复它。
有趣的是,如果我将ServiceControlViewController
' 视图设置为 ' NSButton
,则它会被正确添加并且不会被压缩到零高度。它只发生在Custom Views
我创建的。
PS:我的 InterfaceBuilder 创建的视图只包含一堆按钮和一个标签:
PPS:我添加了一个 MWE
objective-c - 用 NSArray 和 NSMutableArray 填充 NSStackView
我有一个 Stack 来填充一组视图。
它运作良好。如果我想用可变数组替换这个数组怎么办?
我为“动态”堆栈视图尝试了此代码,最后将可变数组转换为简单数组,但不起作用:
在控制台中,如果我打印可变数组,我有:
我该如何解决?