如何在iOS自动布局中构建单行和多行标签的布局?

时间:2017-07-04 07:24:58

标签: ios swift xcode autolayout ios-autolayout

我在swift中有一个应用程序,遇到了自动布局问题。我已经提出了解决方案,但它似乎没有按预期工作。

所以,这是问题所在: 我在表格视图单元格中有两个标签第一个应该只有一行,第二个必须有所需的行数,并根据需要占用尽可能多的垂直空间。 第一个标签应始终完整显示,因此,确定第二个标签的位置,大小和行数。当然,在绘制单元格时以编程方式设置两者的文本。

解决方案似乎非常简单:将第一个标签锚定在左侧,将其垂直居中,将第二个标签锚定到第一个标签的父顶部,右侧,底部和右侧。将第二个标签的行数设置为0. 编辑器不显示警告或错误。

这就是它的样子:

Constraints

在大多数情况下,它看起来不错,如下图所示,但有时不是(下图中的红色箭头):

Screenshots

第一个标签应具有绝对优先级,绝不会被截断,包裹或剪切,但这种情况会发生。我做错了什么?

UPD:为了使问题更清楚,第一个标签是所谓的“边距标签”,它代表了边距和单元格的指标。这样做是为了模仿树结构。第二个当然是文本本身。 '>'是关闭评论,'v'是打开的。

4 个答案:

答案 0 :(得分:3)

选择第一个标签(>)并进入Interface Builder中的测量面板。

在底部附近,它将具有“内容压缩阻力”的值。目前它将是251751(我记不起哪个),它将与另一个标签相同。

将此值更改为1000。这将阻止它压缩并使第二个标签压缩。

答案 1 :(得分:0)

为第一个标签设置高度约束,为'线设置1属性

答案 2 :(得分:0)

您可以将第一个标签的尾随设置为> =到第二个标签的前导

答案 3 :(得分:0)

增加第一个标签的内容抗压缩优先级。如果需要,增加第二个标签的水平内容拥抱优先级。