【发布时间】:2018-09-13 09:58:12
【问题描述】:
更新异步下载的图片高度约束后如何更新tableview单元格高度?
图片下载和约束改变后如何触发tableView单元重新布局?
最好的方法是什么?
已经尝试将代码放入 Dispatch 主队列,但结果同样糟糕。我在 cellForRow 方法中执行此操作,也将其移至 willDisplayCell。一次又一次的出现这个问题……
使用 Kingfisher 库进行图像缓存的代码示例:
if let imgLink = post.imageLink {
if let url = URL(string: imgLink) {
cell.postImage.kf.setImage(with: url, placeholder: UIImage(), options: nil, progressBlock: nil) { (image, error, cacheType, imageURL) in
if let image = image, cell.tag == indexPath.row {
cell.heightConstraint.constant = image.size.height * cell.frame.size.width / image.size.width
}
}
}
}
【问题讨论】:
-
如果你设置了带有自动布局的单元格,并且锚点指定了单元格的高度而没有歧义,那么你只需要在图片加载后在 tableView 上调用 beginUpdates 和 endUpdates。
-
好吧,imageView 对单元格的 contentView 有顶部、底部、前导和尾部约束,还有一个高度约束,可以根据从服务器下载的图像比例进行更改。我在下载方法的完成处理程序中调用了开始/结束更新,但存在滚动和跳转问题。
-
如果你有代码,你应该分享它。
-
你是否尝试在加载图像后在主线程中更新表格。
-
是的,同样奇怪的跳跃滚动和随机单元格重新加载。
标签: ios swift uitableview