我有一个包含垂直叠加视图的UITableViewCell。我已将UIStackView设置为UITableViewAutomaticDimension的行高和估计高度。UITableView的其中一个子视图包含如下两个UIStackView
ios - 自动版式:缩放UIStackView/UITableViewCell中的UIImageView问题-LMLPHP
小的是UIImageViews,大的是avatarImageView。以下是限制条件:
messageImageView
ios - 自动版式:缩放UIStackView/UITableViewCell中的UIImageView问题-LMLPHP
avatarImageView
ios - 自动版式:缩放UIStackView/UITableViewCell中的UIImageView问题-LMLPHP
然后,我尝试用messageImageView的委托方法更新cellForRowAt的高度以匹配图像比例(我让图像视图的宽度为200px)。

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

我正试图使用此图像例如:
ios - 自动版式:缩放UIStackView/UITableViewCell中的UIImageView问题-LMLPHP
但它根本不起作用,图像占用了太多空间,而且由于某种原因,化身图像视图最终被隐藏(单元格被红色包围,上面是一个只有文本的单元格,工作正常):
ios - 自动版式:缩放UIStackView/UITableViewCell中的UIImageView问题-LMLPHP
那么我在这里遗漏了什么?
谢谢你的帮助!

最佳答案

您的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

关于ios - 自动版式:缩放UIStackView/UITableViewCell中的UIImageView问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52030632/

10-13 03:55