如何在IOS中的UIStackView中设置权重

Asi*_*Das 8 ios android-linearlayout uistackview

UIStackView类似于Android,LinearLayout但我无法弄清楚如何为子视图设置权​​重.

假设我有一个垂直UIStackView和3 UIImageView秒.我想连续为UIImageViews 设置权重3,6,1 .我怎么做?

布局图

rob*_*off 7

UIStackView没有相同的权重概念.它可以使用子视图intrinsicContentSize作为权重,但设置特定intrinsicContentSize通常需要创建一个子类,并且它也在其他情况下使用(与android:layout_weight您熟悉的属性不同,仅用于LinearLayout).

但是,由于UIStackView通过对其排列的子视图应用约束来工作,您可以通过在子视图的高度之间设置其他约束来获得权重的效果.(UIStackView旨在让您添加自己的约束以通过这种方式调整布局.)

在您的情况下,您希望将顶视图的高度约束为底视图高度的3倍,并且您希望将中间视图的高度约束为底视图高度的6倍.

您可以通过创建等宽约束,然后编辑约束的乘数来在故事板中设置比例高度约束.

在代码中,您可以这样做(在iOS 9.0或更高版本上):

NSLayoutConstraint.activateConstraints([
    top.heightAnchor.constraintEqualToAnchor(bottom.heightAnchor, multiplier: 3),
    middle.heightAnchor.constraintEqualToAnchor(bottom.heightAnchor, multiplier: 6),
])
Run Code Online (Sandbox Code Playgroud)


Fat*_*tie 5

内在内容大小等完全不涉及。

要设置分数高度,只需设置分数高度:

  1. 修复堆栈视图的高度(例如整个屏幕)

  2. 放入三视图A、B、C

  3. 对于 A,将高度约束设置为堆栈视图高度的 0.3

  4. 对于 B,将高度约束设置为堆栈视图高度的 0.6

将堆栈视图设置为分布:填充。

如果你在功能强大的 iPhone 上运行它,它会发现 C 是“0.1”。

你完成了。