自动布局最大宽度同时保持可分性

时间:2015-10-12 21:20:14

标签: ios autolayout

我想在我的视图中使用自动布局在其超视图中使用最大宽度,同时保持宽度可被7整除。

1 个答案:

答案 0 :(得分:0)

自动布局并不直接支持可分性。如果你希望它被7整除,因为你想要7个子元素,你想要相同的大小和分布,那么你可以设置子元素的约束和相关的子元素与包含视图的约束,你可以实现

如果你不自然地拥有这些子元素,你可以人为地添加它们只是为了达到你的7级整除要求。您可以添加UILayoutGuide s(如果定位> = iOS 9.0)或隐藏的子视图(如果定位)

无论你是否自然拥有这样的子元素,或者你只是为了这个目的而添加它们,方法都是一样的。设置它们都具有相等宽度的约束。设置约束以将它们排成一行(尾随一个等于前一个的前导)。设置约束以使其组合宽度等于包含视图的宽度,方法是将第一个的前缘设置为等于容器的前缘,最后的后缘等于容器的后缘。 / p>

您需要设置一些垂直约束来指定它们的垂直位置和大小,但这些与此问题相关。

现在,在容器上设置相对于超级视图的约束。例如,在水平和垂直方向上将容器置于其超视图中心的约束,加上约束以使容器的前沿等于超视图的前沿,但具有不需要的优先级(例如900) 。它必须是非必需的,因为它有时必须被打破以保持内部约束所暗示的居中和可分割的宽度。但是,即使必须打破它,自动布局系统也会尽量让它尽可能接近,这就是容器尽可能宽的原因。

您还需要一个约束,即容器的前沿大于或等于超级视图的前沿,具有所需的优先级。这是因为否则自动布局系统可能使容器比超级视图略宽,如果它能够与超级视图一样宽,同时保持7的可分宽宽度。 / p>