调整大小&布局:如何实现这个设计?

时间:2014-12-13 08:43:24

标签: objective-c xcode cocoa nsview nstextfield

好吧,这可能看起来很简单,但我已经挣扎了太久,所以我决定寻求帮助。

基本上,我有一个容器NSView。

内容是(从左到右):

  • NSSegmentedControl
  • NSTextField
  • NSSegmentedControl

它们都是水平对齐的(=它们在同一“线”)。

我要做的是:

  • 固定第一个元素的宽度,并固定在左侧
  • resizeable textfield
  • 固定最后一个元素的宽度,并固定在右侧

我想这是不言自明的。


这是我对3个视图的自动调整设置:

查看1

enter image description here

查看2

View 2

查看3

enter image description here


这就是问题:整个调整大小正常。直到文本字段在折叠的位置调整大小。当superview /容器再次以正常大小调整大小时,整个设计都搞砸了(文本字段溢出容器,还有很多这样奇怪的问题)。

发生了什么事?有什么建议吗?


注意:我让它使用自动布局(仅设置“自动布局”和“添加(缺少)约束”),但我绝对想避免它,因为性能影响是巨大的 - 总体设计相当复杂,有很多嵌套,所以让我们坚持老式的方式。 : - )

1 个答案:

答案 0 :(得分:2)

使用自动调整遮罩的旧弹簧和支柱模型基于根据要调整大小的子视图的当前大小的大小变化的比例分布。一旦任何子视图达到零大小,它就会变得混乱。无论是将零除以零还是乘以零,都会得到伪造的结果。这是该系统长期存在的问题。

您必须设置最小窗口大小以防止发生这种情况。

对于所有缺陷,自动布局是旧模型的许多其他限制的解决方案。