使用等高无约束的比例大小调整

Proportional sizing using equal heights missing constraint

提问人:Summer 提问时间:5/7/2022 最后编辑:Summer 更新时间:5/13/2022 访问量:51

问:

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

enter image description here enter image description here

自动布局 比例

评论

0赞 DonMag 5/7/2022
更改所有实例的名称...非常非常困难地分辨哪一个与另一个有关。Container View
0赞 Summer 5/8/2022
哎呀,对不起!我刚刚重命名并重新发布..谢谢

答:

1赞 DonMag 5/8/2022 #1

布局正是您为 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,因为它会为这个示例提供漂亮的数字。

如果我们有两个视图 - 蓝色和橙色 - 并且我们希望它们具有相同的高度,则如下所示:

enter image description here

非常简化,自动布局说:“蓝色的高度为 1 个单位,橙色等于蓝色,因此它的高度也是 1 个单位1 + 1 == 2,总共 2 个高度单位,因此将 450 除以 2,并为每个视图提供 225“ 的高度

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

enter image description here

自动布局说:“蓝色的高度为 1 个单位,橙色等于蓝色 x 2,因此它的高度为 2 个单位1 + 2 == 3 总高度单位...450 / 3 == 150,因此给蓝色的高度为 1 x 150 == 150,给橙色的高度为 150 x 2 == 300”。

对于您的布局,它如下所示:

enter image description here

我们现在总共有 9 个高度单位 (),自动布局显示:“450 / 9 == 50 (每个高度单位)......”,您可以看到它如何布局视图。1 + 1 + 2 + 2 + 2 + 1

评论

0赞 Summer 5/13/2022
谢谢。。这确实使橙色容器与蓝色容器的高度相同,但我希望蓝色本身像橙色一样小。有没有办法这样做?或者我是否需要重新开始,使蓝色容器具有高度约束,然后以某种方式适应所有视图?
0赞 DonMag 5/13/2022
@Summer - 请参阅编辑我的答案。
0赞 Summer 5/13/2022
谢谢!!你把它放在了我的艺术家大脑可以理解的地方......非常感谢!!:)这是我在这里看到的最清楚的答案之一!