假设我有一个名为container
的视图。 container
包含5 UIButtons
。我想在NSLayoutConstraint
上添加一个高度container
,此高度应该等于其子视图中最高按钮的NSLayoutHeightAttribute
。
我没有看到这样做的简单方法。有人有什么想法吗?
答案 0 :(得分:35)
每个子视图(按钮)需要一个约束,指定容器的高度应大于或等于子视图的高度。赋予该约束高优先级,例如UILayoutPriorityRequired
(无论如何都是默认值)。
然后在容器的高度上再添加一个约束,指定它的高度应该等于零。将该约束赋予低优先级,例如UILayoutPriorityLow
。由于自动布局试图最小化不满足约束的错误,因此它将使容器尽可能短,同时仍满足所有更高优先级的约束。
我在this gist中举了一个例子。它产生了这个结果:
蓝色视图有固定的高度。棕褐色视图是蓝色视图的超视图,其高度受到限制,如上所述。我将每个子视图的底部固定在容器的底部,但你可以将顶部或Y中心固定在上面。