【问题标题】:SDWebImage - how to load image from Cache?SDWebImage - 如何从缓存加载图像?
【发布时间】:2012-07-19 05:19:51
【问题描述】:
我使用SDWebImage 将图像下载到我的UITableView 使用:
[cell.imageView setImageWithURL:[NSURL URLWithString:tempPhotoURL] placeholderImage:[UIImage imageNamed:@"temp.jpg"]];
这非常有效 - 没有问题。但是,当我单击 TableView 中的任何给定行时,我想将该行的缩略图加载到 UIImageView 中,该UIImageView 位于我正在导航的即将到来的详细信息屏幕中。那么我该怎么做呢?我现在是否必须从缓存中获取图像,因为它已经下载了?如果是这样,这个方法/过程是什么?如果这不是要走的路,那是什么?
我无法从 SDWebImage 库中包含的所有这些文件和方法中弄清楚...
【问题讨论】:
标签:
iphone
uitableview
uiimage
sdwebimage
【解决方案1】:
只需使用几乎完全相同的代码来设置图像 - SDWebImage 将检查它是否已经缓存,如果是,它将使用它而不是从 url 获取图像。
【解决方案2】:
试试这个,
[self.imgView sd_setImageWithURL:[NSURL URLWithString:imageUrl placeholderImage:placeholderUrl options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
//Progress block
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL){
//Completion block
}];
【解决方案3】:
编码时有很多方法可以实现。
一个想到的是确保 UIImageView 是您的详细视图控制器(详细视图控制器的 API 的一部分)的可访问属性。
然后,您需要做的就是在推送详细视图控制器之前,将单元格的图像视图分配给详细视图的 UIImageView 属性。
或
创建一个方便的初始化程序并将单元格的图像视图传递给它...
等等等等。
【解决方案4】:
调用同样的方法,你在TableView中下载的DetailView中设置图片时,它会先检查缓存。这是使用SDWebImage下载图像的代码sn-p
[yourImageView sd_setImageWithURL:[NSURL URLWithString:yourImageUrl]
placeholderImage:[UIImage imageNamed:@"placeholder.jpg"]];