iOS布局为什么中心约束不够?

问题描述:

我真的不明白这个......的逻辑......奇怪的iOS布局系统。iOS布局为什么中心约束不够?

我把一个UILabel的约束对齐中心X到Superview。

为什么它抱怨需要X位置的新约束?

center is center no?

+1

它还需要知道宽度是固定的,还是应该随屏幕扩展。 – rdurand 2014-09-19 12:58:48

+0

另外,请看[Ray Wenderlich的2部分自动布局教程](http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1) – rdurand 2014-09-19 13:11:40

您需要详细了解视图的水平位置。居中视图并没有说它具有固定的宽度,或者应该保持视图周围的前/后空间。

这里有两个可能的选项(也有与固定纵横比固定的高度,如在@Moshe他的回答说):

  1. 你的视图将始终具有的61的宽度(例如) :

Fixed width

  1. 你的视图将具有在左/右侧的固定前缘和后空间:
  2. Leading/trailing

开始=>
+0

好的,解决了我的问题,但根据不同语言的不同句子长度,是否可以告诉标签使用容器中可用的所有水平空间? – 2ndGAB 2014-09-19 13:30:24

+0

您可以使用第二个选项,并为前导空间和尾随空间设置0 – rdurand 2014-09-19 13:34:47

+0

好的,很好理解,非常感谢大家。 – 2ndGAB 2014-09-19 14:24:18

该警告是误用。这并不意味着没有限制。应该说“没有足够的约束来计算X位置”。

您需要为X的位置添加一个约束,但是您还需要给自动布局提供足够的约束来计算视图的宽度。

您既可以提供领先空间也可以提供尾部空间,或者您可以提供宽度,或者您可以提供高度和比率。 Autolayout只需要一些工作。

如果你确实添加了一个中心x约束,这应该是足够的自动布局来计算x位置。但是你确定你没有设置中心约束吗?在Interface Builder中拖动这些行的方向可能会造成混淆,因此当您打算设置x约束时,您可能会不小心设置了约束条件。如果您尝试居中x,则您仍然需要y位置的约束,无论是垂直居中还是从顶部或底部到超视图或其他视图的空间。