水平左右约束

Posted

技术标签:

【中文标题】水平左右约束【英文标题】:horizontal left and right constraints 【发布时间】:2015-09-12 20:48:19 【问题描述】:

我不明白如何将左右横向约束放在一起。我仍然不了解界面构建器之外的确切机制,它的约束和模拟器上的有效结果:

我希望在我的视图中心出现标签“ingredienti”(就像我上面的输入文本具有相同类型的约束)。为什么它在模拟预览中超出了我的“屏幕”?

【问题讨论】:

【参考方案1】:

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

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 所示)。

【讨论】:

@volperossa 当您实际运行应用程序时,警告将出现在日志中(NSLog 语句出现的位置)。从问题中的屏幕截图来看,您所看到的并不是实际运行应用程序的结果。 是的,它只是在助手编辑器的预览屏幕中.. NSLog中的警告不是和IB一样吗(我点击黄色三角形时的警告)? @volperossa 不,一点也不【参考方案2】:

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

【讨论】:

感谢您的回答!但我不明白为什么这......在左右约束下我不会得到相同的结果吗?

以上是关于水平左右约束的主要内容,如果未能解决你的问题,请参考以下文章

ScrollView左右约束的坑

如何让 SnapKit 约束左右边缘?

项目之间的水平线性布局空间,没有左右填充

css 左右居中问题

可变宽度标签列的 iOS 自动布局

水平刷新或左右刷新控件HorizontalRefreshLayout