如何在 iOS 自动布局中构建单行和多行标签的布局?
How to build a layout of single line and multi line labels in iOS autolayout?
我在 swift 中有一个应用程序,但遇到了自动布局问题。我想出了解决办法,但它似乎没有按预期工作。
所以,问题是:
我在 table 视图单元格中有 两个标签 。 第一个应该只有一行,第二个必须有尽可能多的行并占据尽可能多的垂直space 如所须。 第一个标签 应始终完整显示,因此,确定第二个标签 的位置、大小和行数。当然,两者的文本都是在绘制单元格时以编程方式设置的。
解决方案似乎很简单:将第一个标签锚定到左侧,垂直居中,将第二个标签锚定到第一个标签的父级顶部、右侧、底部和右侧.将第二个标签的行数设置为 0。 编辑器未显示任何警告或错误。
这是它的样子:
在大多数情况下它看起来不错,如下图所示,但有时不是(下图红色箭头):
第一个标签应该具有绝对优先级,永远不会被截断、换行或剪切,但是这种情况发生了。我做错了什么?
UPD:为了让问题更清楚,第一个标签是所谓的'margin label',它代表单元格的边距和指标。这样做是为了模仿树结构。第二个当然是文本本身。 '>' 用于关闭评论,'v' 用于打开。
为第一个标签设置高度约束并为 'lines' 属性设置 1
您可以将第一个标签的尾部设置为 >= 到第二个标签的前导
Select 第一个标签(>
)并进入 Interface Builder 中的测量面板。
在底部附近,它的值为 "Content Compression Resistance"。目前它将是 251
或 751
(我不记得是哪个)并且它将等于另一个标签。
将此值更改为 1000
。这将阻止它压缩并改为压缩第二个标签。
提高第一个标签的内容抗压缩优先级。如果需要,增加第二个标签的水平内容拥抱优先级。
我在 swift 中有一个应用程序,但遇到了自动布局问题。我想出了解决办法,但它似乎没有按预期工作。
所以,问题是: 我在 table 视图单元格中有 两个标签 。 第一个应该只有一行,第二个必须有尽可能多的行并占据尽可能多的垂直space 如所须。 第一个标签 应始终完整显示,因此,确定第二个标签 的位置、大小和行数。当然,两者的文本都是在绘制单元格时以编程方式设置的。
解决方案似乎很简单:将第一个标签锚定到左侧,垂直居中,将第二个标签锚定到第一个标签的父级顶部、右侧、底部和右侧.将第二个标签的行数设置为 0。 编辑器未显示任何警告或错误。
这是它的样子:
在大多数情况下它看起来不错,如下图所示,但有时不是(下图红色箭头):
第一个标签应该具有绝对优先级,永远不会被截断、换行或剪切,但是这种情况发生了。我做错了什么?
UPD:为了让问题更清楚,第一个标签是所谓的'margin label',它代表单元格的边距和指标。这样做是为了模仿树结构。第二个当然是文本本身。 '>' 用于关闭评论,'v' 用于打开。
为第一个标签设置高度约束并为 'lines' 属性设置 1
您可以将第一个标签的尾部设置为 >= 到第二个标签的前导
Select 第一个标签(>
)并进入 Interface Builder 中的测量面板。
在底部附近,它的值为 "Content Compression Resistance"。目前它将是 251
或 751
(我不记得是哪个)并且它将等于另一个标签。
将此值更改为 1000
。这将阻止它压缩并改为压缩第二个标签。
提高第一个标签的内容抗压缩优先级。如果需要,增加第二个标签的水平内容拥抱优先级。