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

Macos 为什么在IB中这种简单的自动布局会崩溃?,macos,autolayout,interface-builder,Macos,Autolayout,Interface Builder,我有一个窗口,在滚动视图中有一个文本视图和两个按钮。我在所有边上添加了约束,包括前导、尾随、顶部和底部。对于按钮,我有固定的宽度和高度,以及到底部和边缘的距离 我希望它看起来像这样: 这就是Interface Builder一直给我的: 它还通过添加缺少的约束来修复歧义,但实际上单击按钮没有效果。不添加任何约束。错误(以及修复错误的提议)仍然存在 我已经尝试添加它要求的约束,尽管我不明白为什么需要这些约束,至少按钮已经有(固定的)宽度约束。但我不断地犯错误,窗口不断缩小到零 当实际运行程序

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

我希望它看起来像这样:

这就是Interface Builder一直给我的:

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

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

当实际运行程序时,窗口看起来很好。但我怀疑这些自动布局错误与此问题有关:

项目在这里:


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

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

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

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

要使其在IB中“看起来正确”(并避免错误/警告),您可以为ScrollView提供一个占位符固有内容大小:


谢谢!从库中添加到的NSScrollView似乎有一个默认的内在大小,这在这里丢失了,可能是在我将其更改为子类,然后再次返回NSScrollView时丢失的。