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 的大小