【发布时间】:2015-09-12 20:48:19
【问题描述】:
我不明白如何将左右横向约束放在一起。我仍然不了解界面构建器之外的确切机制,它的约束和模拟器上的有效结果:
我希望在我的视图中心出现标签“ingredienti”(就像我上面的输入文本具有相同类型的约束)。为什么它在模拟预览中超出了我的“屏幕”?
【问题讨论】:
标签: ios autolayout interface-builder constraints nslayoutconstraint
我不明白如何将左右横向约束放在一起。我仍然不了解界面构建器之外的确切机制,它的约束和模拟器上的有效结果:
我希望在我的视图中心出现标签“ingredienti”(就像我上面的输入文本具有相同类型的约束)。为什么它在模拟预览中超出了我的“屏幕”?
【问题讨论】:
标签: ios autolayout interface-builder constraints nslayoutconstraint
前导或尾随约束(这是您设置的)设置视图左边缘与您关联的任何内容之间的固定距离。
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 所示)。
【讨论】:
NSLog 语句出现的位置)。从问题中的屏幕截图来看,您所看到的并不是实际运行应用程序的结果。