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

Posted

技术标签:

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

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

事情是这样的:

当 UIView 调整大小时:

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

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

问候, 拉皮努。

【问题讨论】:

【参考方案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 会有这个常量作为负值。

【讨论】:

以上是关于iOS Autolayout 调整标签大小和它们之间的空间的主要内容,如果未能解决你的问题,请参考以下文章

iOS Autolayout:调整大小父视图中的 UILabels 问题

Autolayout,几个UILabels,每行,相同的字体大小?

使用 AutoLayout 和 iOS 8 为不同设备调整 UICollectionViewCell 的大小

以 Autolayout 视觉形式调整子视图的大小

使用 Autolayout iOS8 自动调整 UI 组件的大小

AutoLayout - 将 UILabel 调整为它的 Superview 并调整它的大小