使用等高缺失约束的比例尺寸

Proportional sizing using equal heights missing constraint

我希望蓝色容器视图的高度与橙色容器视图的高度相同。我正在使用比例调整大小来这样做(所有这些都在一个垂直堆栈中)我选择了所有容器然后向它们添加了相等的高度约束。我很困惑,因为蓝色容器视图似乎没有比例高度限制。我能够很好地改变其他人的比例高度。

布局正是您为高地指定的布局:

Orange: 0.5 * Blue (1/2 Blue Height)
Green:  == Blue
Yellow: == Blue
Purple: == Blue
Grey:   0.5 * Blue (1/2 Blue Height)

如果你想“蓝色容器视图与橙色容器视图高度相同”,你需要设置

Orange: == Blue
Green:  == Blue
Yellow: == Blue
Purple: == Blue
Grey:   0.5 * Blue (1/2 Blue Height)

您没有对 Blue Container 本身设置“比例高度”约束,因为您已经告诉堆栈视图根据这些高度约束适合所有视图。


编辑 - 回应评论:“我希望蓝色本身像橙色一样小”

如果你把这个写出来(或说出来),你大概可以自己回答这个问题...

我要:

  • orange.height等于blue.height
  • grey.height等于blue.height
  • green.height 是 blue.height
  • 的两倍
  • yellow.height 是 blue.height
  • 的两倍
  • purple.height 是 blue.height
  • 的两倍

所以...

Orange: == Blue
Grey:   == Blue
Green:  == Blue * 2.0
Yellow: == Blue * 2.0
Purple: == Blue * 2.0

也许这会帮助您理解...

我们没有为蓝色视图分配高度,因为我们使用堆栈视图的高度来安排其子视图。

因此,我们假设堆栈视图高度为 450 点,通过设置它或通过设置顶部和底部约束 - 它恰好是 450,因为它会给这个例子很好的数字。

如果我们有两个视图 - 蓝色和橙色 - 我们希望它们具有相同的高度,它看起来像这样:

非常简单,auto-layout说:“蓝色有1个单位的高度,橙色等于蓝色,所以它也有一个1个单位的高度。1 + 1 == 2,一共2个高度单位,所以将450除以2,给每个视图的高度为225"

如果我们希望 Orange 的高度是 Blue 的两倍,我们约束 Orange.Height = Blue.Height with Multiplier: 2 然后我们得到:

Auto-layout 说:“蓝色的高度为 1 个单位,橙色等于蓝色 x 2,因此它的高度为2 个单位。1 + 2 == 3 个总高度单位...450 / 3 == 150,所以给蓝色高度 1 x 150 == 150,给橙色高度 150 x 2 == 300".

您的布局如下所示:

我们现在共有 9 个高度单位 (1 + 1 + 2 + 2 + 2 + 1),auto-layout 表示:"450 / 9 == 50(每个高度单位)...",您可以看到它是如何布置视图的。