UIStackView
类似于Android,LinearLayout
但我无法弄清楚如何为子视图设置权重.
假设我有一个垂直UIStackView
和3 UIImageView
秒.我想连续为UIImageView
s 设置权重3,6,1 .我怎么做?
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), ])