Swift:自动布局 - 文本列 - 删除尾随和前导警告

时间:2021-03-21 08:47:05

标签: swift autolayout uilabel

enter image description here

我有两列文本。左侧固定在顶部、左侧和底部,右侧则相反。这仍然会生成前导和尾随警告。如何连接两列的行以告诉 Auto Layout 只扩展它们之间的空间?

1 个答案:

答案 0 :(得分:1)

虽然确切地知道要在这些标签中放入什么文本,但故事板/界面生成器 (IB) 不知道。

所以这对你来说很棒:

enter image description here

但是……如果“日期”文本更改为“您想什么时候开始?”

enter image description here

因为我们没有在两个标签之间给出约束,所以它们重叠了。

所以,让我们在两个“行”上做同样的事情,但在标签之间添加 8 的 Trailing-to-Leading 约束:

enter image description here

我们已经防止了重叠,但现在我们看到了一个新问题(IB 会警告您)...哪个标签应该被压缩? IB(以及运行时的自动布局)会做出自己的决定,这可能不是您想要的,并且在类似布局之间可能会不一致。

为了解决这个问题,我们为我们不想压缩的标签提供了更高的内容压缩抵抗优先

enter image description here

这是结果 - 顶部“行”的左侧标签默认为 750,右侧标签为 751,底部“行”的左侧标签为 751,以及默认值为 750 的右侧标签:

enter image description here

它看起来与“C”相同,但我们不再有来自 IB 的错误/警告。

因此,即使您知道两列中的文本永远不会足够重叠,IB 也会鼓励您提供足够的约束(和优先级设置)以确保您得到您想要的内容。