iOS Autolayout调整标签和它们之间的空间

时间:2014-02-19 13:46:43

标签: ios uiview ios7 uilabel autolayout

我在iOS 7上使用Autolayout来设计我的观点。 我可以自动调整视图大小和我的所有对象,但是我有一个问题: 我有4个标签,一个在另一个旁边。这些标签在UIView中,当我的UIView调整大小(宽度)时,我希望我的标签自动移动,但仍然可见。

这是事情: enter image description here

当UIView正在调整大小时: enter image description here

你知道我的意思吗?我在视图的右侧修复了正确的标签。有用。 对于第一个标签,这不是问题。 但对于标签2和3,我不知道如何调整它们之间的最小间距。

所有的建议和想法都很受欢迎。谢谢。

此致 Lapinou。

3 个答案:

答案 0 :(得分:1)

使用此UIView类别:https://github.com/jrturton/UIView-Autolayout

你可以很容易地实现这一目标......

NSArray *views = @[ button1, button2, button3, button4 ];
[self.containerView spaceViews:views onAxis:UILayoutConstraintAxisHorizontal withSpacing:10 alignmentOptions:0];

编辑:实际上......这使得每个按钮的宽度都是动态的,可能无法完全满足您的需求。

答案 1 :(得分:1)

我认为您必须使用Equal Widths约束,并将左侧按钮放在左侧,右侧按钮则相同,最后每个按钮等于0,Horizontal Space Constraint

这应该有用......

enter image description here

答案 2 :(得分:0)

您可能需要在-viewDidLayoutSubviews中手动更改NSLayoutConstraint对象的常量属性。我假设标签没有固定的宽度,所以它们之间不会有一个恒定的空间。看起来你想要它们在彼此的象限中,第一个和最后一个标签与边缘有一个固定的距离。也许标签2和3可以水平居中于容器,然后被容器的宽度/ 2偏移。

    [NSLayoutConstraint constraintWithItem:self.label2
                                 attribute:NSLayoutAttributeCenterX
                                 relatedBy:NSLayoutRelationEqual
                                    toItem:self.view
                                 attribute:NSLayoutAttributeCenterX
                                multiplier:1.0
                                  constant:self.view.frame.size.width/2.0];

label2会有一个像上面发布的常量,但标签3会将此常量作为负值。