将图像添加到 UITableViewCell 中的 UIImageView 会意外修改图像视图高度

Adding image to UIImageView in UITableViewCell modifies the image view height undesirably

我在 UITableViewCell 里面有一个 UIImageView。使用估计的行高,单元格高度根据 UILabel 中的文本行数而变化。我希望此图像在单元格中垂直居中,宽度固定,高度 >= 40 且 <=80。随着单元格高度的增加,我希望图像增加到最大高度然后停止,始终保持垂直居中。为此,我添加了这两个高度约束和宽度约束,以及对单元格顶部和底部的约束,其中填充常数为 5,优先级为 250。向图像视图添加背景颜色,您可以看到它正在按预期布局。但是当我在图像视图上设置图像时,高度发生意外变化。

标签中有 3 行:

标签中有 6 行:

这是为什么?如何确保图像视图中的图像不影响图像视图大小,因为我希望由自动布局约束确定的单元格高度来确定它?

Here's a sample project.

虽然我无法使用这些自动布局约束获得预期的图像视图高度,但我确实通过使用单个高度约束并在 layoutSubviews 中手动设置其 constant 实现了目标UITableViewCell 的计算结果为 max(40, min(contentView.bounds.height - 5 * 2, 80))。然后向父视图添加一个 CenterY 约束以使其垂直居中。现在将图像添加到图像视图不会意外更改图像视图高度。