提问人:Summer 提问时间:5/7/2022 最后编辑:Summer 更新时间:5/13/2022 访问量:51
使用等高无约束的比例大小调整
Proportional sizing using equal heights missing constraint
问:
我希望蓝色容器视图与橙色容器视图的高度相同。我正在使用比例大小来做到这一点(所有这些都在垂直堆栈中)我选择了所有容器,然后向它们添加了等高约束。我很困惑,因为蓝色容器视图似乎没有比例高度限制。我能够很好地改变其他人的比例高度。
答:
布局正是您为 Heights 指定的布局:
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)
您没有在蓝色容器本身上设置“比例高度”约束,因为您已经告诉堆栈视图根据这些高度约束来适应所有视图。
编辑 - 回应评论:“我希望蓝色本身像橙色一样小”
如果你把这个写出来(或说出来),你可能会自己回答这个问题......
我想要:
- orange.height 等于 blue.height
- grey.height 等于 blue.height
- green.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,因为它会为这个示例提供漂亮的数字。
如果我们有两个视图 - 蓝色和橙色 - 并且我们希望它们具有相同的高度,则如下所示:
非常简化,自动布局说:“蓝色的高度为 1 个单位,橙色等于蓝色,因此它的高度也是 1 个单位。1 + 1 == 2,总共 2 个高度单位,因此将 450 除以 2,并为每个视图提供 225“ 的高度
如果我们希望 Orange 的高度是 Blue 的两倍,我们进行约束,我们得到:Orange.Height = Blue.Height with Multiplier: 2
自动布局说:“蓝色的高度为 1 个单位,橙色等于蓝色 x 2,因此它的高度为 2 个单位。1 + 2 == 3 总高度单位...450 / 3
== 150,因此给蓝色的高度为 1 x 150 == 150,给橙色的高度为 150 x 2 == 300
”。
对于您的布局,它如下所示:
我们现在总共有 9 个高度单位 (),自动布局显示:“450 / 9 == 50
(每个高度单位)......”,您可以看到它如何布局视图。1 + 1 + 2 + 2 + 2 + 1
评论
Container View