Woo*_*ock 5 lazy-loading uitableview uiimageview sdwebimage
这个问题是我的理解,因为我的代码工作正常.我已经查看了SDWebImage,但它相当大,我无法确定我正在质疑的机制是如何工作的.
好吧,假设我有一个充满UIImageViews的桌面视图(每个单元格内部有一个),我在每个单元格中调用SDWebImage类别/扩展,然后从网络上懒惰加载图像.
使用新下载的图像更新屏幕上的单元格,而无需重新加载tableview?
我问这个,因为我很惊讶地发现当使用SDWebImage扩展时,我的每个单元格的imageViews图像一旦下载了相应的图像就会弹出.
我的印象是我必须重新加载tableView,但是当图像可用时,每个单元格imageView'自动'更新!
这是如何运作的?SDWebImage是否保留对它正在使用的每个cell/imageView的引用?
SDWebImage将加载的图像插入到UIImageView已查询加载的实例中。
由于UITableViewCell您必须采取一些技巧来避免单元格中出现不相关的图像,原因如下:
URL一项 ( )的图像。firstURLURL中最后一个单元格 ( lastURL) 的内容。firstURL加载完成,相应的图像被插入到最后一个单元格的图像视图中,因为它是firstURL已查询加载的图像视图。lastURL加载完成,相应的图像被插入到最后一个单元格的图像视图中。步骤 3 和 4 在图像视图中可能看起来像是快速闪烁。
为了避免这种情况,您需要在子类prepareForReuse的方法实现中解决先前下载的取消问题UITableViewCell。
例如
- (void)prepareForReuse {
[super prepareForReuse];
[self.imageView sd_cancelCurrentImageLoad];
self.imageView.image = <placeholder image>;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |