水平左右约束

时间:2015-09-12 20:48:19

标签: ios autolayout interface-builder constraints nslayoutconstraint

我不明白如何将左右水平约束放在一起..我仍然不了解界面构建器之外的确切机制,它的约束以及模拟器上的有效结果: enter image description here

我期待标签" ingredienti"在我的视图的中心(就像我上面的输入文本具有相同类型的约束)..为什么它超出我的"屏幕"在模拟预览?

2 个答案:

答案 0 :(得分:3)

前导或尾随约束(这是您设置的)在视图的左边缘与您与之关联的任何内容之间设置固定距离。

新通用故事板中的视图控制器和Xcode中的xib文件的默认模拟大小为600x600。但是目前的设备都没有这个尺寸。

所以,如果你的标签有100宽度,那么为了使用左边和右边“中心”它。使用模拟接口构建器宽度为600的正确约束,我们创建一个左边约束250和一个右边约束250(250 + 100 + 250 = 600)。

但同样,实际设备都没有这个宽度。因此,如果我们在iPhone 6上运行您的应用程序,它的宽度将转换为375“点”。如果我们在iPhone 4s或iPhone 5 / 5s上运行它,它的宽度可以转换为320点。

因此,我们的100点宽标签是约束,距离父视图的左边缘有250个点的恒定距离。 250 + 100 = 350.但是iPhone 5只有320点的宽度,因此标签的一部分出现在屏幕的边缘,并且正确的约束被打破,因为左右约束不能同时满足(你可能有运行应用程序时,在日志中发出一堆警告消息。)

如果我们希望标签居中,我们必须创建一个水平中心约束(如mikle94's answer所示)。

答案 1 :(得分:2)

您必须从标签中删除左右约束,然后添加“居中水平到超级视图”约束。

screenshot