【问题标题】:Why does this simple autolayout collapse in IB?为什么这个简单的自动布局在 IB 中崩溃了?
【发布时间】:2021-03-20 13:55:01
【问题描述】:

我有一个带有滚动视图中的文本视图和两个按钮的窗口。我在各个方面都添加了约束,前导、尾随、顶部和底部。对于按钮,我有固定的宽度和高度,以及到底部和边缘的距离。

我希望它看起来像这样:

这就是 Interface Builder 不断给我的:

它还不断提供通过添加缺少的约束来修复歧义,但实际上单击按钮没有任何效果。不添加任何约束。错误(以及修复它的提议)仍然存在。

我已经尝试添加它要求的约束,尽管我不明白为什么需要它们,并且至少按钮已经具有(固定的)宽度约束。但是我不断收到错误,并且窗口不断缩小。

实际运行程序时,窗口看起来不错。但我怀疑这些自动布局错误与这个问题有关:NSTextView in magnified NSScrollView breaks on resize

项目在这里:https://github.com/angstsmurf/spatterlight/tree/helpviewtest

(分支 helpviewtest 是专门为这个问题创建的缩减测试用例。)

【问题讨论】:

    标签: macos autolayout interface-builder


    【解决方案1】:

    您有一个嵌入在滚动视图中的剪辑视图中嵌入的文本视图,它们都没有固有内容大小

    IB 不知道运行时会发生什么。

    因此,尽管运行此程序时一切看起来都很棒,但您的代码将提供足够的信息来根据需要进行布局。

    要让它在 IB 中“看起来正确”(并避免错误/警告),您可以给 ScrollView 一个 Placeholder 内在内容大小:

    【讨论】:

    • 谢谢!似乎从库中添加的 NSScrollView 有一个默认的内在大小,在这里丢失了,可能是当我将它更改为子类然后再次返回 NSScrollView 时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2013-10-29
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多