【转】利用SDWebImage下载图片
利用SDWebImage下载图片的原因
近期项目中有一个关于开屏广告加的需求变更。需要客户端将一段时间内的开屏广告图都预先下载到本地,确保用户在网络不佳甚至断网的情况下都能看到我们的开屏广告。一般情况下我们都是通过SDWebImage来动态的加载网络图片,能不能通过SDWebImage来帮我们预先下载好图片呢?下面就来分享一下我是怎么通过SDWebImage预加载图片的 :)
封装好的下载类
为了能方便的实现图片的下载,使用,移除等功能的调用,我封装了一个类ZYImageDownloader,并且已经在github上开源,有兴趣的伙伴可以直接前往下载
原理分析
其实SDWebImage内部已经帮我们实现了图片下载的类,SDWebImageDownloader一个专门用来下载图片的类,SDWebImagePrefetcher一个专门用来批量下载图片的类
这里我们主要就是使用了SDWebImagePrefetcher来下载图片,我们只需要将要下载的图片地址传入,SDWebImagePrefetcher就会帮我们将图片逐个下载下来,并且缓存在本地,缓存的方式和我们通常使用的动态加载图片一样以url为key存储
[[SDWebImagePrefetcher sharedImagePrefetcher] prefetchURLs:prefetchURLs progress:^(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls){}completed:^(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls){}];
当我们需要使用对应地址的图片时,我们只需要以url为key来获取图片即可
NSString*key=[[SDWebImageManager sharedManager]cacheKeyForURL:[NSURL URLWithString:imageURL]];UIImage*image=[[SDImageCache sharedImageCache]imageFromCacheForKey:key];returnimage;
链接:https://www.jianshu.com/p/b2a071d0bb41