UIStackView中子视图为何总是顶部附着?如何设置垂直居中?
嗨,这个问题其实很好解决,根本不用手动去删约束——因为UIStackView的子视图对齐是靠它自身的属性来统一控制的,你看到的那个让UIImageView贴顶部的约束是StackView自动生成的,手动删除反而容易出问题。
具体解决步骤
如果你用的是 Storyboard/Xib
- 选中你的水平UIStackView
- 打开右侧的「Attributes Inspector」(属性检查器,就是那个小滑块图标)
- 找到Alignment(对齐)选项,把当前的
.top(顶部对齐)改成Center Y(Y轴居中) - 这样所有子视图就会自动和栈视图的centerY对齐啦
如果你用代码创建StackView
直接设置StackView的alignment属性就行:
Swift 代码:
// 假设你的StackView实例叫stackView stackView.alignment = .centerY
Objective-C 代码:
// 假设你的StackView实例叫stackView stackView.alignment = UIStackViewAlignmentCenterY;
原理很简单:水平StackView的alignment属性决定了子视图在垂直方向上的对齐方式,改成.centerY后,StackView会自动调整内部所有子视图的约束,让它们的Y轴中心和自己的Y轴中心对齐,完全不用手动操作子视图的约束哦~
内容的提问来源于stack exchange,提问作者RayChen
相关产品推荐
相关产品推荐

