看,没有间隔!
根据我原来答案的评论部分的建议,特别是@Rivera的有用建议,我简化了我原来的答案。
我用 gif 来说明这是多么简单。我希望这些 gif 对您有帮助。以防万一您对 gif 有疑问,我在下面包含了旧答案和纯屏幕截图。
指示:
1)添加按钮或标签。我用的是 3 个按钮。
2)将每个按钮的中心 x 约束添加到超级视图:
3)将每个按钮的约束添加到底部布局约束:
4)调整上面 #3 中添加的约束,如下所示:
a)选择约束条件,b)删除常量(设置为 0),c)按如下方式更改乘数:将按钮数量 + 1,并从顶部开始,将乘数设置为按钮计数加1:1, 进而按钮计数加1:2,最后按钮计数加1:3。 (如果您感兴趣,我会在下面的旧答案中解释我从哪里得到这个公式)。
5)这是一个正在运行的演示!
注意:如果您的按钮具有较大的高度,那么您将需要在常量值中对此进行补偿,因为约束来自按钮的底部。
旧答案
尽管Apple的文档和Erica Sadun的优秀书籍(自动布局揭秘)也就是说,可以均匀地间隔视图without垫片。对于您希望均匀间隔的任意数量的元素,这在 IB 和代码中非常简单。您所需要的只是一个称为“部分公式”的数学公式。做起来比解释起来更简单。我将尽力在 IB 中进行演示,但在代码中也同样容易实现。
在相关示例中,您将
1)首先设置每个标签具有中心约束。这非常简单。只需控制从每个标签到底部的拖动即可。
2) 按住 Shift 键,因为您还可以添加我们将要使用的另一个约束,即“底部空间到底部布局指南”。
3)选择“底部空间到底部布局指南”和“容器中水平居中”。对所有 3 个标签执行此操作。
基本上,如果我们将想要确定坐标的标签除以标签总数加 1,那么我们就可以将一个数字添加到 IB 中以获得动态位置。我正在简化公式,但您可以使用它来设置水平间距或同时设置垂直和水平间距。真是超级强大啊!
这是我们的乘数。
标签1 = 1/4 = .25,
标签2 = 2/4 = .5,
标签3 = 3/4 = .75
(编辑:@Rivera 评论说您可以直接在乘数字段中使用比率,然后使用 xCode 进行数学计算!)
4) So, let's select Label1 and select the bottom constraint. Like this:
5) 在属性检查器中选择“第二项”。
6) 从下拉列表中选择“反转第一项和第二项”。
7) 将常数和 wC hAny 值清零。 (如果需要,您可以在此处添加偏移量)。
8) 这是关键部分:在乘数字段中添加我们的第一个乘数 0.25。
9) 当您在此处时,将顶部的“第一项”设置为“CenterY”,因为我们希望将其居中于标签的 y 中心。这一切应该是这样的。
10) 对每个标签重复此过程并插入相关乘数:Label2 为 0.5,Label3 为 0.75。这是所有紧凑型设备的所有方向的最终产品!超级简单。我一直在研究很多涉及大量代码和间隔的解决方案。这无疑是我见过的关于该问题的最佳解决方案。
更新:@kraftydevil 补充说,底部布局指南仅出现在故事板中,而不出现在 xib 中。在 xibs 中使用“容器底部空间”。接得好!