【问题标题】:NSTextField stops resizing when not editableNSTextField 在不可编辑时停止调整大小
【发布时间】:2015-01-31 22:55:42
【问题描述】:

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

【问题讨论】:

  • 不是答案,而是一种解决方法。我添加了一个类似于文本字段的虚拟 nsview。然后我向文本字段添加了宽度约束。每当 splitview 委托说它调整大小时,我将 textfield 约束常量设置为等于 nsview 框架的宽度。现在似乎可以工作

标签: objective-c cocoa autolayout nstextfield nssplitview


【解决方案1】:

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

文本字段的水平 Content Hugging 优先级大概高于拆分视图左视图的 Hold 优先级。因此,文本字段抵抗“拉伸”比其内容更宽,优先级高于左视图抵抗大小增加。

降低文本字段的水平 Content Hugging 优先级和/或提高左视图的 Hold 优先级,使前者大于后者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多