自动布局(iOS)中如何使一个项目在两个其他项目之间居中?

19

我在 View Controller 的顶部有 5 个项目,我正在尝试使用自动布局将它们均匀分布。对于左侧的项目(返回按钮),我添加了一个距左边框15像素的约束,对于右侧的项目(相机),我添加了一个距右边框15像素的约束。然后,我设置了中心项目(0:01)以对齐中心 x,使其位于中间位置。最后,我选择了“重置为建议的约束”来处理省略号和闪光灯项目。

在 iPhone 5 和 4 上查看时,看起来很棒。如您所见,所有项目均平均分布:
enter image description here

到目前为止,一切都进行得很顺利。然而,在 iPhone6 和 iPhone6+ 上测试时,省略号和闪光灯符号未在 < 和 0:01 之间居中,如下所示: enter image description here

如何在两个相邻项目之间居中一个项目?也就是说,我如何将“...”居中,以便正好位于“<”和“0:01”之间?这个简单的任务花费了我几个小时,我不明白为什么Xcode没有一个居中两个相邻项的功能。
任何帮助都将不胜感激!
2个回答

33

我想到的唯一方法是创建一个容器,将您想要居中对齐的元素放在其中。该容器应具有相同的前导和尾随空间,并将您的 "元素" 居中对齐在该容器中。

在下面的示例中,蓝色框表示橙色 "...",深灰色框表示用于居中的容器。一旦布局正常工作,只需设置容器为透明填充即可。

输入图像描述


太棒了。我会试一下的。希望苹果能在不久的将来找到更简单的方法来解决这个问题。 - Josh O'Connor
请查看这个问题,以获取更一般的解决方案(即用于间隔n个视图)。 - ahmacleod
1
我多次使用了这种技术。那么,如果没有容器,还是无法实现这个吗? - Seto
1
这个容器的做法真的很烦人,你找到其他解决方案了吗? - PaFi

0
只是补充一下:如果您将UIImageView用作容器,则由于没有使用图像填充它,因此它已经是透明的。此外,上部和下部的控制点很容易定位。

1
是的,但我建议使用视图作为容器作为标准做法。 - Josh O'Connor
我们已经过了VB6的时代了吧.. UIView被设计为“标准”容器视图;UIImageView则有完全不同的用途。 - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接