Xcode7 - 等高乘数约束导致约束冲突

Xcode7 - equal heights multiplier constraint causing conflicting constraints

我正在尝试与 Xcode7 中的 the OP of this question 几乎相同的事情。

我的最终目标是让垂直 StackView 有两个子视图:一个占据父级高度的 70%,另一个占据剩余的 30%。

我按照我链接的 post 中的说明进行操作。我选择了子视图(GMSMapView)和父视图 StackView,并选中了 Pin 约束菜单中的 equal heights 框。那工作得很好而且花花公子。但是,当我从 GMSMapView 的大小检查器编辑该约束并将乘数更改为 .7 时,突然出现 conflicting constraints 错误!

这是我正在处理的场景的图片:

这是错误的图片:

有谁知道如何解决这些冲突?我尝试关闭 Autoresize Subviews 但不确定是否有效,因为我无法删除错误消息中显示的某些约束。

UIStackView 的高度基于其子视图的大小(除非您使用 UIStackViewDistributionFillEqually)。

前两个冲突约束的计算结果为

Stack View.height = View.height
Map View.height = 0.7 x Stack View.height

但是由于 UIStackView 的高度基于其子视图,因此本质上存在第三个约束。

Stack View.height = Map View.height

所有这些约束不能同时存在,因为它们相互冲突。


我能想到两个方案。

删除 UIStackView。由于它只包含一个视图,因此使用它不会给您带来任何好处,只会让事情变得复杂。

如果这不是一个选项,您将需要删除一些限制,这样您就不会将 UIStackView 限制到特定高度。