2013-03-17 42 views
5

我有一个包含三个标签的视图。使用Autolay将三个对象居中

第一个标签放在最上面。 第三个标签放置在底部50px。

我想要做的是始终将第二个标签放置在使用自动布局的这两个标签的中心,但我无法确定如何去做。

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

我试着将两个垂直间距约束设置为小于或等于初始值,但它没有工作。

只有使用autolayout才可以做到这一点? 我想添加另一种视图,但这看起来不是一个好的解决方案..

谢谢。

回答

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); 
} 
0

我的其他答案我认为是不正确的。我认为最简单的方法是创建一个容纳标签的NSView,第二个标签设置在它的中心。我之前的回答假定,当Autolayout系统需要在视图之间分割空间时,它会同样做到,但一些快速测试表明它不会。

我不认为有可能用Autolayout说某个空间应该等于另一个空间。