Xcode Autolayout - 约束等于另一个约束
Posted
技术标签:
【中文标题】Xcode Autolayout - 约束等于另一个约束【英文标题】:Xcode Autolayout - Constraint equal to another constraint 【发布时间】:2013-09-12 15:32:49 【问题描述】:我终于尝试在 IB 中采用自动布局,但在为某些对象设置约束时遇到了麻烦。我基本上希望 5 个视图在整个超级视图中垂直平均分布。我有 3 个按钮,由 2 行分隔。我希望间距 D1、D2、D3 和 D4 相等不调整任何东西的高度。在 IB 中如何设置?
【问题讨论】:
【参考方案1】:您可以为 D1、D2、D3 和 D4 创建 UILayoutGuide
对象(或者,对于 ios 9 之前的 iOS 版本,UIView
对象),例如 spacer1
、spacer2
等,然后将它们的高度定义为等于每个高度。在视觉格式语言 (VFL) 中,垂直约束看起来像:
@"V:|-[button1][spacer1][separator1(4)][spacer2(==spacer1)][button2][spacer3(==spacer1)][separator2(4)][spacer4(==spacer1)][button3]-|"
我不知道你是如何表示你的分隔线的(这里我只是使用一个 4 点高的 UIView
,但你可以按照你想要的任何方式来做)。但希望这能说明这个想法。
如果您在 Interface Builder 中执行此操作,您可以在可见控件之间添加 UIView
对象,然后选择所有间隔视图(例如通过按住 shift 单击),然后添加约束以固定“高度”相等”以使它们都具有相同的高度。
您可以通过在每个按钮和分隔线的NSLayoutAttributeCenterY
属性上创建约束并调整每个按钮的multiplier
值以使它们均匀分布,从而以编程方式在不使用分隔视图的情况下实现类似的效果。效果非常相似,但并不完全相同。
【讨论】:
很好的简单解决方案,可以直观地做到这一点。以上是关于Xcode Autolayout - 约束等于另一个约束的主要内容,如果未能解决你的问题,请参考以下文章
如何在相同大小的类中给出不同的约束(xcode 8 AutoLayout)
AutoLayout - 使用水平约束保持图像的比例(Swift Xcode 6)
以编程方式创建 AutoLayout 约束 (IOS) Xcode 7.0.1