我在界面构建器和视图中有一个窗口。我已经将窗口大小调整为我想要的大小。我希望窗口保持相同的宽度,但调整大小以垂直拥抱内容。我在窗口上设置了最小尺寸。该窗口不是用户可调整大小的。我将视图添加到app delegate中的窗口,并添加水平和垂直中心位置约束。
我无法阻止窗口水平拥抱内容。即使窗口上的最小尺寸,甚至将contentView上的水平内容拥抱优先级设置为1,在窗口上设置框架,似乎没有任何效果。我错过了什么?
答案 0 :(得分:2)
你在这里所做的事情或者失败的方式并不是很清楚,但我会一拍。
您似乎想要在窗口中添加视图,并使窗口垂直调整大小以适应内容,但不会水平调整大小。确定。
首先,窗口的最小尺寸不会在这里发挥作用。它是来自约束之前的较旧设置,如果我们使用约束,则不会将其用于此问题。
其次,内容拥抱优先级也不会发挥作用。 contentView不会通过它的视图运行并确保它拥抱它们 - 如果它确实你永远无法添加其他更有趣的约束,因为它们会发生冲突。
添加视图时,应设置水平中心约束(当前正在进行),然后在新视图上设置顶部和底部对齐约束(您没有说过),因此它与超级视图的顶部和底部。
这应该就是你所需要的。您似乎表示在添加子视图时窗口以某种方式调整大小,如果您执行这些步骤并且仅执行这些步骤,则不应该执行此操作,因此如果此操作失败,我将不得不查看代码。
编辑:
你有“视图”你正在添加集合,所以它将其自动调整掩码(隐藏,因此它非常混乱)转换为更多约束,这些约束使你绊倒。这是旧系统的工件,很糟糕。
这是我在检查器中设置它的方式的照片(框现在未选中)。我做了一些其他工作来让它工作,但我想如果你只是取消选中这个盒子你可以玩它并让它自己工作。如果没有,请再次ping我。
(在我的机器上,我为窗口的contentView创建了子视图,并为子视图添加了宽度约束,因为你无法直接约束contentView(这是愚蠢的)。然后我将你的视图添加到我的约束子视图中,将y中心线2改为限制顶部和底部的线条。这一切都很有效。)