SDWebImage - 如何从缓存加载图像?

Posted

技术标签:

【中文标题】SDWebImage - 如何从缓存加载图像?【英文标题】:SDWebImage - how to load image from Cache? 【发布时间】:2012-07-19 05:19:51 【问题描述】:

我使用SDWebImage 将图像下载到我的UITableView 使用:

[cell.imageView setImageWithURL:[NSURL URLWithString:tempPhotoURL] placeholderImage:[UIImage imageNamed:@"temp.jpg"]];

这非常有效 - 没有问题。但是,当我单击 TableView 中的任何给定行时,我想将该行的缩略图加载到 UIImageView 中,该UIImageView 位于我正在导航的即将到来的详细信息屏幕中。那么我该怎么做呢?我现在是否必须从缓存中获取图像,因为它已经下载了?如果是这样,这个方法/过程是什么?如果这不是要走的路,那是什么? 我无法从 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"]];

【讨论】:

以上是关于SDWebImage - 如何从缓存加载图像?的主要内容,如果未能解决你的问题,请参考以下文章

SDWebImage 库未从缓存加载图像

IOS:仅当远程图像未更改时才缓存 SDWebImage

使用 SDWebImage 而不是 AFNetworking 进行图像加载有很大的优势吗?

如何从按钮的 imageView 中删除缓存的 SDWebImage

在 UITableView 重新加载时从 SDWebImage 设置图像

SDWebImage源码解读UIButton+WebCache