繁体   English   中英

如何垂直居中2个垂直堆叠的UILabels

[英]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.

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