【问题标题】:iOS Autolayout resize labels and space between themiOS Autolayout 调整标签大小和它们之间的空间
【发布时间】:2014-02-19 13:46:43
【问题描述】:

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

事情是这样的:

当 UIView 调整大小时:

你知道我的意思吗?我将正确的标签固定在视图的右侧。有用。 对于第一个标签,这不是问题。 但是对于标签2和3,我不知道如何适应它们之间的最小空间。

所有建议和想法都非常感谢。谢谢。

问候, 拉皮努。

【问题讨论】:

    标签: ios uiview ios7 uilabel autolayout


    【解决方案1】:

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

    你可以很容易地做到这一点......

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

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

    【讨论】:

    • 太棒了!这个项目真的很有帮助。谢谢!
    【解决方案2】:

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

    应该可以的...

    【讨论】:

      【解决方案3】:

      您可能需要在 -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 会有一个像上面发布的常量,但 label 3 会有这个常量作为负值。

      【讨论】: