为什么这个简单的自动布局在 IB 中会崩溃?

Why does this simple autolayout collapse in IB?

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

我希望它看起来像这样:

这就是 Interface Builder 一直给我的:

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

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

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

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

(分支helpviewtest是专门为此问题创建的精简测试用例。)

您有一个嵌入在滚动视图中的剪辑视图中的文本视图,none 其中具有 内部内容大小

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

因此,虽然当您 运行 这样做时一切看起来都很棒,但您的代码将提供足够的信息来根据需要进行布局。

为了让它在 IB 中“看起来正确”(并避免 errors/warnings),您可以给 ScrollView 一个 Placeholder 内在内容大小: