ios - Auto-Layout Constraint : When resizing, 不平均分配空间给 subview ?

标签 ios xcode autolayout

用一个例子来证明我的问题可能是最简单的,所以这里是:

我有一个容器 View ,它有两个 subview ,A 和 B。

容器:240x80

A:80x80,固定前导/顶部/底部间距。

B:160x80,固定前导/顶部/底部间距,固定 h 间距与 A。

enter image description here

现在,当我将容器的大小调整为 480x80 时,我得到了这样的结果: enter image description here

那是因为 Xcode 认为我的约束不明确,所以它为我固定了 A 的宽度,并为 B 提供了所有额外的水平空间。

好的,我理解它的担忧,但我真正想要的是让 A 和 B 按比例调整大小,如下所示:

enter image description here

我的直觉是它与拥抱/压缩阻力优先级设置有关,但我不知道如何设置这些值以获得我想要的结果!

换句话说,当容器被放大时,如何指定多余的空间去哪里?如何设置优先级,以便空间分配到 View A 和 View B 4:6? 5:5? 8:2?

谢谢!

最佳答案

这与您刚才提出的另一个问题非常相似。做一个约束,使一个 View 的宽度与另一个 View 的宽度相等,并使用乘数来获得您想要的比率:

NSLayoutConstraint *con = [NSLayoutConstraint constraintWithItem:self.viewA attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.viewB attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];

这个约束需要添加到 View A 和 B 的父 View 中。

关于ios - Auto-Layout Constraint : When resizing, 不平均分配空间给 subview ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14188389/

相关文章:

ios - 应用程序更新时设置图标角标(Badge)

swift - 从右向左连续,无需推送或呈现 ViewController

ios - snapkit 自动布局标签宽度和填充

ios - 如何检测 UILabel(没有设置宽度,只是自动布局)是否被截断(你好,我是测试......)?

iPhone模拟器无法启动?

android - 如何通过特定 IP 路由 API 请求?

ios - 有没有办法在 Swift 中使用 CAShapeLayer.compositingFilters 来合成蒙版?

ios - Xcode Analyzer 警告 - 字典值不能为 nil

ios - 从 NSOperation 返回数据?

ios - 如何在 VFL 中编写 topLayoutGuide 约束