Autolayout高度等于MAX(多个视图高度)

时间:2013-06-14 21:52:17

标签: ios cocoa-touch autolayout

假设我有一个名为container的视图。 container包含5 UIButtons。我想在NSLayoutConstraint上添加一个高度container,此高度应该等于其子视图中最高按钮的NSLayoutHeightAttribute

我没有看到这样做的简单方法。有人有什么想法吗?

1 个答案:

答案 0 :(得分:35)

每个子视图(按钮)需要一个约束,指定容器的高度应大于或等于子视图的高度。赋予该约束高优先级,例如UILayoutPriorityRequired(无论如何都是默认值)。

然后在容器的高度上再添加一个约束,指定它的高度应该等于零。将该约束赋予低优先级,例如UILayoutPriorityLow。由于自动布局试图最小化不满足约束的错误,因此它将使容器尽可能短,同时仍满足所有更高优先级的约束。

我在this gist中举了一个例子。它产生了这个结果:

example screen shot

蓝色视图有固定的高度。棕褐色视图是蓝色视图的超视图,其高度受到限制,如上所述。我将每个子视图的底部固定在容器的底部,但你可以将顶部或Y中心固定在上面。