UITableViewCell 意外行为
UITableViewCell unexpected behaviour
我有一个 UITableViewCell
有多个 UILabels
其中一个是多行的。所有 UILabels
与 content hugging and compression resistance
的间距固定,如下图所示。
在代码中,tableView
是 delegate
和 dataSource
,rowHeight
属性 和 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
我有一个 UITableViewCell
有多个 UILabels
其中一个是多行的。所有 UILabels
与 content hugging and compression resistance
的间距固定,如下图所示。
在代码中,tableView
是 delegate
和 dataSource
,rowHeight
属性 和 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