[英]How to center 2 vertically stacked UILabels vertically
我有两个垂直堆叠的UILabel:
+----------------------------+
| +----------------------+ |
| | blah blah blah | |
| +----------------------+ |
| |
| +----------------------+ |
| | asdf fdsa | |
| | asdfear aoeirhaleir | |
| +----------------------+ |
+----------------------------+
UIViews的文本在运行时动态加载,因此它们可能有1到3行文本。 我想在文本加载后垂直对齐。 它们应该沿着它们的“质心”垂直居中。
我怎么能做到这一点?
编辑:像这样:
将两个标签放在容器UIView中。 将标签的边缘限制在容器的边缘(顶部标签的底部和底部标签的顶部除外,它们应相互约束),然后在顶层视图中垂直居中容器。
您的视图层次结构应如下所示:
UIView rootView
UIView containerView
UILabel topLabel
UILabel bottomLabel
具有以下约束:
|[topLabel]|
|[bottomLabel]|
V:|[topLabel][bottomLabel]|
|-[containerView]-|
[NSLayoutConstraint constraintWithFirstItem:containerView firstAttribute:NSLayoutConstraintAttributeCenterY relation:NSLayoutRelationEquals secondItem:rootView secondAttribute:NSLayoutConstraintAttributeCenterY multiplier:1 constant:0]
(您可以在IB中指定所有这些约束而不是代码;在StackOverflow帖子中描述IB约束会更加困难。)
更新 :在iOS的更新版本中,更容易将标签放在垂直堆栈视图中,而不是使用普通视图并手动设置其中的约束,但技术是相同的。
你可以用IB做到这一点。 根据内容使其高度灵活。 使它们之间的距离变小并固定。 然后在上方和下方放置一个间隔视图,其中顶部的一个顶部约束到superview,一个底部约束绑定到顶部文本视图。 底部间隔应该具有链接到底部文本视图的顶部约束,以及绑定到超级视图的底部约束,所有底部约束都具有零空间。
最后,制作一个高度约束,使2个间隔视图的高度相等。
使用自动布局 - 通过手动NSLayoutContraint,可视格式语言(VFL),甚至通过Xcode / IB - 创建约束,使标签的宽度保持相等,其X中心等于超视图的X中心,高度可变或根据您的需要有所关联。
Apple的自动布局指南 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.