我有自定义的UITableViewCell:可重复使用的TableViewCell异步高度
也有一定的对象(从服务器获得)与ImageUrl属性。
任务:需要异步下载图片(通过翠鸟)。如果图像不存在 - 隐藏ImageView。 一些工作正常,但:
当图像开始下载(背景),用户也可以滚动的tableView,如果图像不能下载(图片==无),ImageView的隐藏(需要隐藏/显示)和scrollView中的contentSize已更改。 - 问题第一(滚动跳转)
第二:当用户滚动填充tableView,一些单元格没有图像,并且当这个单元格被重用时,Kingfisher也尝试下载图像以重用单元格。如果图像存在 - imageView显示,像单元格一样展开。 再次scrollview contentSize改变,结果我们有毛刺跳转。
P.S.尝试使用表更新,重新加载行,也使用不同的单元格为空单元格 - 不成功。也试图找到解决的SO,但只资助理论:)
有想法(不仅是理论)?
谢谢
P.S.S.基于图像的硬编码单元尺寸(有或没有)。还要更改约束imageView(0或xxx)。如果理解正确的 - 的tableView不知道细胞的大小(因为设置UITableViewAutomaticDimension)
不是很好的解决方案,但作品。
loadFlag - 不起作用。问题不在“旗”(也试过这个)。问题如果(例如)你有没有图像的第一个单元(这个单元很小)。向上滚动,当tableView中的单元格出现时 - 与下一个对象(在数组中的队列中)重用。但这个对象有图像(说存储在“标志”)。当tableView将此图像设置为重用单元格时,单元格会展开,并且scrollView将具有跳跃伪影,因为scrollViewContentSize将保持更大。 –
@SergeyKrasiuk正如我在第一个问题中所说的,除非你得到你的arrayOfObjects图像信息,否则你不可能阻止单元格的大小调整,你可以通过某种方式知道是否存在图像。由于此下载是延迟加载,因此单元格高度总是会有时间延迟,并且除非在下载之前知道是否存在图像,并且在下载之前设置大小,否则总会存在调整大小的事情 –
基于图像的硬编码单元大小(有或没有) - 工作良好 –