NSTextField在不可编辑时停止调整大小

时间:2015-01-31 22:55:42

标签: objective-c cocoa autolayout nstextfield nssplitview

我目前有一个拆分视图,当我调整应用程序窗口大小时,我只希望右侧子视图变大(所以左侧保持完全相同的大小)。我在右侧子视图中有一个nstextfield,我可以输入内容。但是,在某些情况下我调用[_textFieldInQuestion setEditable:NO]。在这样做之后,当我尝试调整应用程序的大小时,右边会变大到一定程度,然后左边会增长。我在SO上看到了一个帖子,我应该将nstextfield子类化以实现行为,但我想知道是否有更优雅的替代方案,如果没有,我们如何重写autolayout方法来产生我描述的行为。

1 个答案:

答案 0 :(得分:1)

当文本字段不可编辑时,它具有基于其内容的固有宽度。 (当它是可编辑的时,文本字段的宽度跟踪其内容是没有意义的,因为它的内容不是“内在的”。)

文本字段的水平内容拥抱优先级可能高于分割视图左视图的保持优先级。因此,文本字段阻止“拉伸”比其内容更宽,优先级高于左视图阻止大小增加。

减少文本字段的水平内容拥抱优先级和/或增加左视图的保持优先级,使前者大于后者。