【发布时间】:2018-09-12 16:15:53
【问题描述】:
如何在使用 Kingfisher setImage with completion handler 方法从服务器下载图像后更新单元格高度?图像下载后,我使用以下命令调整其高度约束:cell.imageHeight.constant = image.size.height * cell.frame.size.width / image.size.width。
图像是在cellForRow 方法上下载并设置的,但我也在willDisplayCell 中尝试过,同样的问题。我还在 setImage 方法的完成处理程序中检查了cell.tag == indexPath.row。
我已经尝试了以下方法,但都没有奏效:
-
heightForRow是UITableViewAutomaticDimension和estimatedHeightForRowAt是某个值(可能的最大单元格)以及这 2 个的所有其他组合 - tableview 开始/结束更新
-
reloadRows在 indexPath -
cell.setNeedsLayout、layoutIfNeeded或layoutSubviews dispatch main async
它们中的任何一个都遇到相同的问题:滚动时跳动的表格,第一次显示时单元格高度错误并更新它我必须上下滚动以隐藏和显示该单元格,某些单元格上的 tableview 计算的高度错误.
如果我滚动回顶部,一切都很好,因为所有图像都已在缓存中。
每个人都是怎么做到的? facebook 或 instagram 如何做到这一点?从任何 API 获取单元格高度后如何更新?
【问题讨论】:
-
您能找到更好的解决方案吗?这让我很头疼???? .
标签: ios swift uitableview