使用等高缺失约束的比例尺寸
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
(每个高度单位)...",您可以看到它是如何布置视图的。
我希望蓝色容器视图的高度与橙色容器视图的高度相同。我正在使用比例调整大小来这样做(所有这些都在一个垂直堆栈中)我选择了所有容器然后向它们添加了相等的高度约束。我很困惑,因为蓝色容器视图似乎没有比例高度限制。我能够很好地改变其他人的比例高度。
布局正是您为高地指定的布局:
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
(每个高度单位)...",您可以看到它是如何布置视图的。