当堆栈视图调整大小时,如何让 NSButton 与 NSStackView 分离?

Posted

技术标签:

【中文标题】当堆栈视图调整大小时,如何让 NSButton 与 NSStackView 分离?【英文标题】:How can you get an NSButton to detach from an NSStackView when the stack view resizes? 【发布时间】:2014-01-13 17:40:43 【问题描述】:

当堆栈视图调整大小时,如何让 NSButtonNSStackView 分离?

使用NSCell 绘图的NSControl 子类似乎与其他NSView 子类在自动布局中具有抗压缩性的可见性上有不同的想法。 NSStackView 在这里似乎也没有什么不同。

如果我将控件的可见性优先级设置为高于 1,则它不会下降。 如果我把它设置为0,那么它当然只会下降,永远不会出现。

这应该如何工作? 当堆栈视图的大小调整为较小时,如何使按钮或其他控件放下? 也许是因为缺少 NSStackView 的文档和示例...

【问题讨论】:

+1 表示大胆并与新的NSStackView thingie 搏斗 - 以及第一个 SO 堆栈视图问题 :-) 哈哈哈。好的。谢谢。 【参考方案1】:

在看到任何视图分离之前,我必须做两件事:

    致电-[NSStackView setClippingResistancePriority:forOrientation:]。如果堆栈视图的大小与窗口的大小相关联,则优先级需要小于NSLayoutPriorityWindowSizeStayPut (500),否则堆栈视图不允许窗口小于其内容。

    每次我向堆栈视图添加一个我想分离的视图时,为该视图调用-[NSStackView setVisibilityPriority:forView:]

【讨论】:

迟到总比不到好。当时没有人参与其中。现在您可以在 IB 中进行设置。 :)【参考方案2】:

尝试将优先级设置为NSStackViewVisibilityPriorityDetachOnlyIfNecessary

【讨论】:

不。当它被限制在拆分视图子视图的两侧并且您拖动分隔线时,它就像按钮一样坐在那里。我猜接下来有一些限制优先级的技巧。

以上是关于当堆栈视图调整大小时,如何让 NSButton 与 NSStackView 分离?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用堆栈视图自动调整大小

如何调整我的堆栈视图的分布以适应不相等的视图大小?

UIStackView 图层属性

如何在堆栈视图中动态调整文本视图的大小

如何在 Xcode 7 中使用对象库的堆栈视图

如何以编程方式为其父视图添加视图大小?