【发布时间】:2013-06-11 15:39:43
【问题描述】:
假设我有一个名为container 的视图。 container 包含 5 个 UIButtons。我想在container上添加一个高度NSLayoutConstraint,这个高度应该等于其子视图中最高按钮的NSLayoutHeightAttribute。
我没有看到一个简单的方法来做到这一点。有人有什么想法吗?
【问题讨论】:
标签: ios cocoa-touch autolayout
假设我有一个名为container 的视图。 container 包含 5 个 UIButtons。我想在container上添加一个高度NSLayoutConstraint,这个高度应该等于其子视图中最高按钮的NSLayoutHeightAttribute。
我没有看到一个简单的方法来做到这一点。有人有什么想法吗?
【问题讨论】:
标签: ios cocoa-touch autolayout
您需要为每个子视图(按钮)设置一个约束,指定容器的高度应大于或等于子视图的高度。给这个约束一个高优先级,比如UILayoutPriorityRequired(无论如何都是默认的)。
然后在容器的高度上再添加一个约束,指定它的高度应该等于 0。给这个约束一个低优先级,比如UILayoutPriorityLow。由于自动布局试图最小化未满足约束的错误,它将使容器尽可能短,同时仍然满足所有更高优先级的约束。
我在this gist 中放了一个例子。它产生这个结果:
蓝色视图具有固定的高度。棕褐色视图是蓝色视图的超级视图,它的高度如上所述受到限制。我将每个子视图的底部固定到容器的底部,但您可以固定顶部或 Y 中心。
【讨论】: