我想在Interface Builder中将多个UILabel(作为一个组)水平居中。一个直视控制器我无法弄清楚如何做到这一点。我阅读了关于将UILabel置于视图中然后将视图置于视图控制器中心的注释。当我尝试这个,加班时我说要更新界面构建器中的帧,View会被调整为一无所有。 (即,其高度和宽度将由IB设定为0)。我需要知道如何在界面构建器中使用它。
包含我想要水平居中的多个标签的行的示例如下。大括号只是表明每个标签的开头和结尾,而不是文本的艺术。 < -6->用于表示从标签1到标签2的尾随空间是6
标签1标签2 [等级:0.0]< - 6 - > [距离:125.34公里]
任何建议都将不胜感激。
以下是我所做的事情的一个确切示例,它不起作用:
现在使用以下约束向视图添加两个标签:
一旦完成,我得到以下错误并更新帧将导致它的高度和宽度为0
以下是IB中的页面:
我需要自动调整视图的高度和宽度,以便在视图中放置多行标签,并将视图的所有内容视为一组并以页面为中心。
任何建议都将不胜感激。
答案 0 :(得分:3)
以下是缩写布局上所有约束的工作集的快照,它生成一个始终居中的视图,该视图会随着子视图自动调整大小(即,随着任何标签的内容发生变化,视图会增大或缩小)它)。
对于您的解决方案而言,视图既没有高度也没有宽度约束;它的大小完全受其后代约束的限制。
关键是每个组件都有直接或间接约束,从中可以指定或推断其大小和位置。例如,为了使视图推断其宽度,子标签必须在第一个标签上具有前导空格约束,在最后一个标签上具有尾随空间约束,并且在内部标签之间具有水平空间约束。这些约束加上标签的内容允许推断视图的宽度...并强制视图动态地符合该宽度。
同样适用于视图的高度。例如,您可以指定一个标签的顶部和底部空间,或全部。如果只有一个,则剩余的标签可以与其垂直对齐(请参阅"将中心Y对齐:Label1"在屏幕截图中)。