首页 > 解决方案 > 为什么这个简单的自动布局在 IB 中崩溃了?

问题描述

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

我希望它看起来像这样:

Interface Builder 中的理想窗口

这就是 Interface Builder 不断给我的:

Interface Builder 中的窗口布局损坏

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

界面生成器错误消息

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

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

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

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

标签: macosautolayoutinterface-builder

解决方案


您在 Scroll 视图中嵌入了 Clip 视图中嵌入的 Text 视图,它们都没有固有的 content size

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

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

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

在此处输入图像描述


推荐阅读