好吧,这看起来很简单,但我已经苦苦挣扎太久了,所以我决定寻求一些帮助。
基本,我有一个容器 NSView。
内容为(从左到右):
- 一个
NSSegmentedControl
- 一个
NSTextField
- 一个
NSSegmentedControl
它们都是水平对齐的(=它们在同一条“线”中)。
我想做的是:
- 第一个元素的宽度固定,并固定在左侧
- 可调整大小的文本字段
- 最后一个元素的宽度固定,并固定在右侧
我想这是不言自明的。
<小时/>这是我的 3 个 View 的自动调整大小设置:
查看 1
查看 2
查看3
<小时/>
问题是:整个大小调整工作正常。直到文本字段的大小调整到折叠的程度。当 super View /容器再次调整为正常大小时,整个设计就会变得困惑(文本字段溢出容器以及许多此类奇怪的问题)。
发生什么事了?有什么建议吗?
<小时/>注意:我让它与自动布局一起使用(仅设置“自动布局”和“添加(ing)缺少约束”),但我绝对想避免它,因为性能影响巨大——整体设计相当复杂,有很多嵌套,所以让我们坚持使用老式的方式。 :-)
最佳答案
使用自动调整大小蒙版的旧 Spring 和支柱模型基于大小变化的比例分布,该变化基于正在调整大小的 subview 的当前大小。一旦任何 subview 的大小为零,它就会变得困惑。要么除以零,要么乘以零,你就会得到虚假的结果。这是系统长期存在的问题。
您必须设置最小窗口大小以防止这种情况发生。
自动布局解决了旧模型的这一问题和许多其他限制,以及它的所有缺陷。
关于objective-c - 调整大小和布局 : How to implement this design?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27457069/