我有一个水平的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)
答案 0 :(得分:0)
几件事:
首先,请确保您设置:
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