我需要在屏幕上水平布置一系列按钮,使它们在屏幕上的间距相等,而不是在它们之间间隔相等。一个例子是在那里有3个按钮,它们是均匀间隔的,因此第一个按钮的中心位于屏幕宽度的25%,而其他按钮则是屏幕宽度的50%,75%。
这是相对简单的手动将它们放在x,y坐标中,但我试图避免混合方法。
普遍的建议是在按钮之间使用垫片(UIView)并设置约束以使垫片相等。如果间隔的按钮具有可能不同的尺寸,则这不起作用。假设有3个标有“A”,“B”,“ReallyLong”的按钮。我仍然希望它们居中,屏幕中间有“B”。等间隔物在它们之间留下相等的间距但不均匀分布的按钮。 ReallyLong占用太多空间而B没有居中
答案 0 :(得分:7)
您可以创建约束以将按钮的centerX与其容器对齐。然后,编辑该约束,使按钮的centerX等于容器的尾随属性,乘数为0.25,0.5或0.75(和0常量)。为了最自然地做到这一点,你可能需要让Xcode交换第一和第二项,这样Button.CenterX等于Superview.Trailing(带乘数)而不是相反。
答案 1 :(得分:5)
Apple已经很好地解释了它。
在视图之间创建相等的间距
要根据设备的方向布置多个按比例间隔的视图,请在可见视图之间创建间隔视图。正确设置这些间隔视图的约束,以确保可见视图能够根据设备的方向保持间隔。
以下示例 使用上述任务中的步骤来说明如何按比例间隔定位两个视图。间隔视图是为示例注释的,但通常是空的,没有背景。首先,创建两个视图并将它们放在故事板中。
添加三个间隔视图 - 一个位于最左侧视图的左侧,一个位于两个视图之间,另一个位于最右侧视图的右侧。间隔视图此时不必具有相同的大小,因为它们的大小将通过约束来设置。
为spacer视图创建以下约束:
将间隔视图2和间隔视图3的宽度限制为等于 间隔视图的宽度1.
将间隔视图1的宽度限制为大于或等于
最小所需宽度。
从spacer视图1到。创建一个前导空间到容器约束 容器。
从间隔视图1到视图1创建水平间距约束。 将此约束设置为小于或等于〜的约束 优先级为1000。
从间隔视图2到视图1创建水平间距约束
和视图2.将这些约束设置为小于或等于
约束优先级为999。
从间隔视图3到视图2创建水平间距约束。 将此约束设置为小于或等于〜的约束 优先级为1000。
从spacer视图3到。创建一个到容器的尾随空间约束 容器。
这些约束创建了两个可见视图和三个不可见视图(间隔视图)。这些间隔视图会随着设备方向的变化自动调整大小,保持可见视图按比例间隔,如下面两个图所示:
答案 2 :(得分:4)
我想我解决了。我之前已经能够通过在每个按钮之间插入垫片并将垫片宽度设置为相等来获得均匀间距的BETWEEN按钮。另外还要指定按钮宽度相等。这似乎运作良好。所有文本都集中在适当的位置。
对于3个按钮,这是一个似乎可以做到的视觉约束。
Constraint = "H:|[spacer0(>=0)][button0][spacer1(==spacer0)][button1(==button0)][spacer2(==spacer0)][button2(==button0)][spacer3(==spacer0)]|"
上面的文字看起来像这样,这就是我要找的东西。中间按钮居中,右侧按钮居中于屏幕的右三分之一: