UITableViewCell 意外行为

UITableViewCell unexpected behaviour

我有一个 UITableViewCell 有多个 UILabels 其中一个是多行的。所有 UILabelscontent hugging and compression resistance 的间距固定,如下图所示。

在代码中,tableViewdelegatedataSourcerowHeight 属性 和 heightForRowAt 设置为 UITableViewAutomaticDimension

我尝试用 content hugging and compression resistance 值进行洗牌和各种排列。但是具有较少文本的较小单元格的高度保持相同的大小(如下图所示)并且具有更多文本的单元格看起来就像它应该的那样。 除了 estimatedRowHeight 即 135

,我没有提到任何身高

我用

测了身高
print(cell.frame.height)

所有单元格 return 140.0

结果如下所示:

概念:

ContentHugging Resistance:设置优先级时,它对应于视图必须抵抗内容被拉伸的程度。

例如:如果垂直轴的内容拥抱优先级设置为 1000 或 .required,则意味着视图不会被拉伸超出其内容高度。所以如果标签有 1 行,那么它不会被拉伸超过那 1 行的高度。

Content Compression:恰恰相反,它会阻止视图压缩视图的内容。

解决方案:

对于“Bucharest Marathon”标签,将垂直内容拥抱设置为 .required。

代码:

label.setContentHuggingPriority(.required, for: .vertical)1000