自动布局中的比例距离约束

Posted

技术标签:

【中文标题】自动布局中的比例距离约束【英文标题】:Proportional distance constraints in auto layout 【发布时间】:2013-07-18 09:27:49 【问题描述】:

我无法使用 >ios6 中的自动布局来实现所需的视图布局。

我有固定到父视图的 UIView1 和 UIView3(对应于 TopSpaceToSuperview、BottomSpaceToSuperView 和 FixedHeight),当父视图改变高度时它们的行为与预期一样。

当父视图改变高度时,如果我希望 UIView2 与其兄弟(UIView1 和 UIView3)保持相同的比例距离,我应该在 IB 中为 UIView2 指定哪些约束? (如图所示)

【问题讨论】:

【参考方案1】:

这样做的方法是在视图之间使用不可见的“间隔”视图。

您不能拥有相对大小的空间,因此请改用这些视图。

当前空间在哪里放置一个 UIView。

然后(在代码中,因为您无法在 IB 中执行此操作)使用您想要的正确乘数在这些之间设置高度约束。

[NSLayoutConstraint constraintWithItem1:spacer2
                              attribute:NSLayoutAttributeHeight
                               relation:NSLayoutRelationEqual
                                  item2:spacer1
                              attribute:NSLayoutAttributeHeight
                             multiplier:0.5
                               constant:0];

然后让其他视图以 0 间距“粘贴”在这些间隔视图的上方和下方。

然后您只需隐藏这些视图,然后自动布局将处理其余部分。

【讨论】:

我不知道这个功能是什么时候添加到 xcode 中的,但现在你可以在 IB 中设置该约束。 @Sikander 随意。这是一个三年前的答案。添加到 Xcode 的部分是能够更改约束的乘数。

以上是关于自动布局中的比例距离约束的主要内容,如果未能解决你的问题,请参考以下文章

自动布局比例间距

自动布局高度成比例但有上限约束

iOS 自动布局 - xib 中的等高约束

使用自动布局和约束设置按钮

IOS6 使用自动布局的约束

不遵守自动布局底部间距约束