关于tableViewCell 的问题(重用,自动布局)
2018-04-03 本文已影响9人
yok_
重用导致的图片错乱问题
现象:
当我们快速滑动界面时,如果遇到加载2个不同图片的cell,会出现两个cell上的图片相同的情况
原因:
由于图片是异步下载的,下载完成才给cell设置,由于快速滑动的时候会导致cell的重用,第二种cell重用的是第一种cell,而第一种cell加载图片的block刚好回调完,则第一种cell上的图片数据被设置到第二种cell上,导致图片出错
解决:
1)由于两个cell的位置是不同的,所以可以使用indexPath来区分,异步加载完成的时候判断下indexPath是否相同,相同则设置。
2)把图片的url放入cell中,异步加载完成的时候判断其url是否与cell内的相同,相同的时候再setImage,否则就缓存下来。
3)使用SDWebImage:SDWebImage加载图片前,imageView对象会关联一个下载列表(列表是给AnimationImages用的,这个时候会下载多张图片),当tableview滑动,imageView重设数据源(url)时,会cancel掉下载列表中所有的任务,然后开启一个新的下载任务。这样子就保证了只有当前可见的cell对象的imageView对象关联的下载任务能够回调,不会发生图片错乱现象。