AutoLayout:如何限制 UIView 不高于包含其所有子视图所需的高度?

AutoLayout: how to constrain UIView to be no taller than the height needed to contain all its subviews?

SO 上有几个答案似乎解决了同一个问题,例如 。但是,其中 none 个有效。

目标是使用 AutoLayout 和 Storyboard 创建一个 UIView,将其命名为 parentView,它足够高以包含其子视图并且不会更高。

这可以在代码中轻松完成,但目标是在 Storyboard 中使用 AutoLayout 约束完成这一切,而无需指定静态高度(例如,假设其中一个子视图是 UILabel,因此 parentView 如果 UILabel 的高度因为长文本而增加,则需要相应地增加。

这可能吗?

这实际上可以通过不添加约束来实现,但是没有约束!

将一个新的 View 拖到父视图中,并给它两个约束:中心 X 和中心 Y。拖一些 views/labels 并将它们添加到 View

为了使其工作,内部的子视图必须对 View 的 leading/trailing/top/bottom 进行约束,将所有内容结合在一起。 "defines" 对 View's 宽度和高度的限制,因此 XCode 不会生你的气。

就是这样。 Example project.

编辑:视图和约束的图像