在一条线上居中多个UILabel

我想在Interface Builder中的一行中将多个UILabel(作为一个组)水平居中。 一个直视图控制器我无法弄清楚如何做到这一点。 我阅读了有关将UILabel置于视图中然后将视图置于视图控制器中心的注释。 当我尝试这个,加class时我说要更新界面构建器中的帧,View会被resize为空。 (即IB的高度和宽度将设置为0)。 我需要知道如何在界面构建器中使用它。

下面是一个包含我想要水平居中的多个标签的行的示例。 大括号只是表示每个标签的开头和结尾,而不是文本的艺术。 表示从标签1到标签2的尾随空格是6

标签1标签2 [评级:0.0] [距离:125.34公里]

任何建议将不胜感激。

这是我所做的一个确切的例子,它不起作用:

  1. 在IB中创建一个新的视图控制器
  2. 将页面标签放置在水平居中的页面顶部,并与布局指南的顶部对齐。
  3. 在页面上添加具有以下约束的视图:

查看约束

  1. 现在使用以下约束向视图添加两个标签: 标签约束

  2. 完成后,我得到以下错误,更新帧将导致它的高度和宽度为0 错误信息

这是IB中页面的样子: 在此处输入图像描述

我需要自动调整视图的高度和宽度,以便在视图中放置多行标签,并将视图的所有内容视为一个组并以页面为中心。

任何建议将不胜感激。

下面是缩写布局上所有约束的工作集的快照,它生成一个始终居中的视图,该视图会随着子视图自动resize(即,随着任何标签的内容发生变化,视图会在其周围增大或缩小)。

对您的解决方案很重要,视图既没有高度也没有宽度约束; 它的大小完全受其后代约束的约束。

在此处输入图像描述

关键是每个组件都有直接或间接约束,从中可以指定或推断其大小和位置。 例如,为了使视图推断其宽度,子标签必须在第一个标签上具有前导空格约束,在最后一个标签上具有尾随空间约束,并且在内部标签之间具有水平空间约束。 这些约束加上标签的内容允许推断视图的宽度…并强制视图动态地符合该宽度。

这同样适用于视图的高度。 例如,您可以指定一个标签的顶部和底部空间,或全部。 如果只有一个,则其余标签可以与其垂直对齐(请参阅屏幕截图中的“将中心Y对齐:Label1”)。