![](/img/trans.png)
[英]UIStackView height is not 0 when arranged subviews' heights are all zero
[英]How to set custom heights on arranged subviews within a UIStackView?
我有一个带有一些排列子视图的水平UIStackView
,其高度应该小于StackView的高度,但是沿着StackView的y轴居中。 但是,即使在对子视图设置约束之后,它们的高度也不会改变,并且等于StackView的高度。
除了设置约束定义子视图的高度并将其y轴设置为UIStackView的约束之外,我还将StackView的对齐设置为中心,并将其分布设置为“按比例填充” - 这些都是在类似问题的答案中推荐的,但它们都没有改变子视图的高度。
我也尝试设置StackView的directionalLayoutMargins
,其顶部和底部边距都设置为(StackView的高度 - 排列的子视图的高度)/ 2,所有这一切都将子视图移动到远远低于StackView的中心y轴并且,如果我将底部边距设置为0,则压缩子视图。
这是我的约束:
button.widthAnchor.constraint(equalToConstant: width),
button.heightAnchor.constraint(equalToConstant: 32),
button.centerYAnchor.constraint(equalTo: contentView.stackView.centerYAnchor)
一些东西:
首先,确保你设置:
button.translatesAutoresizingMaskIntoConstraints = false
此外,确保您的约束是活动的,如此(这可能已经是这种情况,但只是确定):
button.widthAnchor.constraint(equalToConstant: width).isActive = true
button.heightAnchor.constraint(equalToConstant: 32.0).isActive = true
button.centerYAnchor.constraint(equalTo: contentView.stackView.centerYAnchor).isActive = true
最后,最重要的一点: stackView.alignment = fill
是默认值。 Alignment
是多少面积arrangedViews
占用上垂直轴(在的情况下horizontal
, fill
会占用的整个高度)。
要使它以垂直轴为中心,请使用:
stackView.alignment = center
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.