AutoLayout:在UIStackView / UITableViewCell中缩放UIImageView时出现问题

时间:2018-08-26 22:17:51

标签: ios swift autolayout uistackview

我有一个UITableViewCell,其中包含一个UIStackView,其视图垂直堆叠。我已将UITableViewAutomaticDimension设置为UITableView的行高和估计高度。 UIStackView的一个子视图包含两个UIImageViews,如下所示:

enter image description here

一个是avatarImageView,一个是messageImageView。这里是约束:

avatarImageView

enter image description here

messageImageView

enter image description here

然后,我正在尝试使用cellForRowAt的委托方法来更新messageImageView的高度以匹配图像比例(并且让图像视图的宽度为200px)。 / p>

let ratio = image.size.width / image.size.height
cell.messageImageViewHeightConstraint?.constant = 200 * ratio

我正在尝试使用此图片作为示例:

enter image description here

但是它根本不起作用,图像占用了太多空间,并且由于某种原因,化身图像视图最终被隐藏了(该单元格被红色包围,在其上方是一个只有文字才能正常工作的单元格):

enter image description here

那我在这里想念什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的ratio与您的使用方式相比是相反的:

最简单的解决方法是除以ratio,而不是乘以它:

let ratio = image.size.width / image.size.height
cell.messageImageViewHeightConstraint?.constant = 200 / ratio

或根据需要更改ratio计算:

let ratio = image.size.height / image.size.width
cell.messageImageViewHeightConstraint?.constant = 200 * ratio