繁体   English   中英

如何在UIStackView中的已排列子视图上设置自定义高度?

[英]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占用上垂直轴(在的情况下horizontalfill会占用的整个高度)。

要使它以垂直轴为中心,请使用:

stackView.alignment = center

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM