Ios 自动布局高度等于最大值(多视图高度)

Ios 自动布局高度等于最大值(多视图高度),ios,cocoa-touch,autolayout,Ios,Cocoa Touch,Autolayout,假设我有一个名为container的视图容器包含5个ui按钮。我想在容器上添加高度NSLayoutConstraint,此高度应等于其子视图中最高按钮的nslayoutEightAttribute 我看不出一个简单的方法来做到这一点。有人有什么想法吗?每个子视图(按钮)都需要一个约束,指定容器的高度应大于或等于子视图的高度。为该约束赋予高优先级,如UILayoutPriorityRequired(这是默认设置) 然后在容器的高度上再添加一个约束,指定其高度应等于零。将该约束设置为低优先级,如UI

假设我有一个名为
container
的视图<代码>容器包含5个
ui按钮
。我想在
容器上添加高度
NSLayoutConstraint
,此高度应等于其子视图中最高按钮的
nslayoutEightAttribute


我看不出一个简单的方法来做到这一点。有人有什么想法吗?

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

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

我举了一个例子。它产生以下结果:


蓝色的风景有固定的高度。tan视图是蓝色视图的超级视图,其高度受到如上所述的约束。我将每个子视图的底部固定到容器的底部,但您可以将顶部或Y中心改为固定。

太棒了,这很管用。虽然我有点困惑。允许我们在容器上添加多个高度约束?如果我说容器的高度应该大于等于子视图1,也应该大于等于子视图2,为什么这两者不冲突?另外,我不理解你最后一个低优先级约束背后的原因。我试着不用它,这也奏效了。这是一个安全措施吗?如果有一个布局同时满足两个约束,那么约束就不会冲突。事实上,冲突约束的定义是它们不能同时满足。假设子视图的高度为60、80和100。那么,任何100或更高的容器高度都可以满足子视图高度和容器高度之间的约束,因此约束不会相互冲突。因为任何至少100的容器高度都将满足我刚才描述的子视图中的约束,这些约束本身是模糊的:存在多个令人满意的解决方案。“自动布局”不会抱怨模棱两可,它可能会为您提供所需的布局。但对你的应用程序或iOS的一些更改可能会使自动布局成为你将来不想要的布局。额外的低优先级约束保护您不受此影响。