【发布时间】:2014-12-13 08:43:23
【问题描述】:
好的,这可能看起来很简单,但我已经挣扎了太久,所以我决定寻求一些帮助。
基本,我有一个容器 NSView。
内容是(从左到右):
-
NSSegmentedControl -
NSTextField -
NSSegmentedControl
它们都是水平对齐的(= 它们在同一“行”中)。
我想做的是:
- 第一个元素的宽度固定,左侧固定
- 可调整大小的文本字段
- 固定最后一个元素的宽度,并固定在右侧
我想这是不言自明的。
这是我对 3 个视图的自动调整大小设置:
查看 1
查看 2
查看 3
问题来了:整个调整大小工作正常。直到文本字段被调整到折叠的位置。当超级视图/容器再次调整为正常大小时,整个设计就会混乱(文本字段溢出容器以及许多此类奇怪的问题)。
发生了什么事?有什么建议吗?
注意:我让它与自动布局一起使用(仅设置“自动布局”和“添加(ing)缺失约束”),但由于性能影响,我绝对想避免它巨大 -- 整体设计比较复杂,有很多嵌套,所以让我们坚持老式的方式。 :-)
【问题讨论】:
-
如果没有自动布局,您可能必须手动更新框架(在许多应用程序中这仍然是正常的)
-
@RyanDignard 对不起,如果这听起来很无知(它是 - 我对自动布局的经验接近于零):我是否有可能仅为这个特定视图(及其内容)启用自动布局并离开其余的原样? (注意:所有的掩码都是通过 Interface Builder 设置的)
-
您可以将您的视图构建为一系列独立的 nib,其中一些设置为具有自动布局,而另一些则没有,并将整个内容粘贴到 viewDidLoad 中
-
以窗口为单位启用自动布局。如果窗口中的任何视图使用自动布局,那么整个窗口都会这样做。也就是说,您不必为给定视图启用自动布局。如果您没有设置
translatesAutoresizingMaskIntoConstraints(并且 IB 没有为您设置),那么该视图的自动调整大小掩码将转换为以相同方式工作的约束。这可以避免您的一些工作,但不会在运行时提高任何效率。
标签: objective-c xcode cocoa nsview nstextfield