5

我有一个包含三个标签的视图。

第一个标签放置在最顶部。第三个标签放置在距底部 50px 处。

我想要做的是始终使用自动布局将第二个标签放在这两个标签的中心,但我不知道该怎么做。

问题是第二个标签不在视图的中心。

我尝试将两个垂直间距约束设置为小于或等于初始值,但它不起作用。

只能使用自动布局来做到这一点吗?我考虑过添加另一个视图,但这看起来不是一个好的解决方案..

谢谢你。

4

2 回答 2

1

我不认为你可以用自动布局来做到这一点。但是覆盖layoutSubviews(或者viewDidLayoutSubviews如果你不使用UIView子类)将标签 2 居中在标签 1 和标签 3 之间是微不足道的(一定[super layoutSubviews]要先打电话)。

编辑:这是一些示例代码。

- (void)layoutSubviews {
    [super layoutSubviews];

    _label2.center = CGPointMake(_label2.center.x, (CGRectGetMaxY(_label1.frame) + CGRectGetMinY(_label3.frame)) / 2);
}
于 2013-03-17T21:23:52.233 回答
0

我认为我的另一个答案是不正确的。我认为最简单的方法是创建一个NSView保存标签的标签,第二个标签设置在它的中心。我之前的回答假设当自动布局系统需要在视图之间分割空间时,它会平等地做到这一点,但一些快速测试表明它没有。

我认为目前使用自动布局不可能说某个空间应该等于另一个空间。

于 2013-03-17T22:26:27.933 回答