4

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

我有一个容器视图,它有两个子视图,A 和 B。

容器:240x80

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

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

在此处输入图像描述

现在,当我将容器的大小调整为 480x80 时,我得到了这样的结果: 在此处输入图像描述

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

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

在此处输入图像描述

我的预感是它与 Hugging/Compression Resistance Priority 设置有关,但我不知道如何设置这些值以获得我想要的结果!

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

谢谢!

4

2 回答 2

6

这与您刚刚提出的另一个问题非常相似。使用乘数进行约束,使一个视图的宽度等于另一个视图的宽度,以获得您想要的比率:

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

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

于 2013-01-07T01:11:51.810 回答
4

并不是说提供的答案不值得,但您现在应该能够在 Xcode (5.1.1) 中通过在视图 A 和视图 B 之间创建相等的宽度约束并设置乘数来做到这一点。

为此,请删除这两个视图之间可能存在的任何其他宽度约束,然后控制从视图 A 到视图 B 的拖动并选择等宽约束。从 Document Outline 视图中选择该约束,然后在检查器中,将 Multiplier 更改为您想要的比率。在您的情况下,它看起来可能是 1:3 或接近的值。以下是我的看法:

在此处输入图像描述

检查员应该是什么样子:

在此处输入图像描述

只是玩比率,直到你做对了。

于 2014-08-07T23:12:42.567 回答