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



我有一个水平UIStackView,其中包含一些排列的子视图,其高度应小于StackView的高度,但沿StackView的y轴居中。但是,即使在子视图上设置约束后,它们的高度也不会改变,并且与 StackView 的高度相同。

除了设置定义子视图高度的约束并将其 y 轴设置为 UIStackView 的 y 轴之外,我还将 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 = fillAlignmentarrangedViews在垂直轴上占用的面积(在horizontal的情况下,fill将占据整个高度(。

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

stackView.alignment = center

相关内容

  • 没有找到相关文章

最新更新