我有非常简单的要求,其中两个标签必须水平居中。所以,我选择了它们并水平选择了Editor-> align-> center。然后将容器约束的顶部空间添加到它们。我还需要标签来缩小/增加内容大小。但是,IB显示错误和几个警告。我可以通过在它们之间添加引脚(水平空间)来使标签缩小/增长,但在这种情况下它们不会居中。以下是截图:
这是错误和警告:
更新theraven给出了一个有趣的建议,即使用虚拟视图将其水平居中并将两个标签固定到它上面。我删除了所有现有的约束,添加了这个虚拟视图和中心X +中心Y约束。然后为它添加了两个标签(添加了水平空间约束)。但是,我仍然收到一堆错误和警告:
UPDATE2只是更新问题,但仍未找到有效答案。 @Theraven解决方案适用于iPhone4,iPhone4S,iPhone5和iPhone5S,但它不是真正的中心,而是一种解决方法。因此,对于iPhone6和iPhone6 Plus,它不起作用,因为前导和尾随空格将被修复,并且不会自动调整大小的宽度。
您可以做的是将两个标签添加到另一个视图,如容器视图。然后,您需要水平居中这个并添加必要的约束。要添加包含UIView
,您可以选择两个标签,转到Editor -> Embed In -> View
。
然后,您需要添加约束以使包含视图适合两个标签。所以像这样:
第一个标签(左一个):
第二个标签:
然后,包含视图应调整大小以适合两个标签。然后,您需要做的就是为此容器视图添加顶部偏移约束,并在父视图中对其进行水平对齐。
这样,包含视图将增加所需的数量以适应两个标签及它们之间的空间,并始终在父视图中居中。
我对我的测试约束进行了截图,以防它对您有所帮助。
希望这是你想要的。
要解决此问题,请在两个标签之间使用空白UIView并将其水平居中。然后将两个标签固定在居中的空白视图的两侧。在自动布局中使用这样的间隔视图是常见的惯例。
我真的不喜欢为了estethic添加另一个视图的想法。
另一种替代方案是使左视图水平居中,并将X左侧的右视图水平放置。
然后,为第一个视图的水平对齐约束赋予一个负值,该值等于第一个视图宽度加上视图距离的一半。或者使用前面评论中所述的乘数。
但这只适用于我想的固定宽度视图。
使用居中的UIStackView
作为两个标签的容器,需要间距。
我真的不明白你想做什么。
您获得的错误(在第一个屏幕截图中)是您缺少标签x位置的约束。
对于UILabel,您必须对容器视图的y和x位置都有约束,当您同时选择它们并选择Editor-> align-> center horizontal时,您只需说label1.center.x = label2.center.x 。您仍然需要说明它们在容器视图中的位置,您将顶部空间添加到容器中,因此您确实具有y位置,但您没有说明x位置应该在哪里。
你说
我有非常简单的要求,其中两个标签必须水平居中
但他们的容器应该在哪里呢?
谢谢
使用spacer视图是我能想到的最好的解决方案,即使它看起来对开发人员来说很难看。用户甚至不知道幕后发生了什么,一旦你有间隔UIView
,你总是可以重复使用它。