利用SDWebImage下載圖片的原因
近期項目中有一個關(guān)于開屏廣告加的需求變更。需要客戶端將一段時間內(nèi)的開屏廣告圖都預(yù)先下載到本地,確保用戶在網(wǎng)絡(luò)不佳甚至斷網(wǎng)的情況下都能看到我們的開屏廣告。一般情況下我們都是通過SDWebImage來動態(tài)的加載網(wǎng)絡(luò)圖片,能不能通過SDWebImage來幫我們預(yù)先下載好圖片呢?下面就來分享一下我是怎么通過SDWebImage預(yù)加載圖片的 :)
封裝好的下載類
為了能方便的實現(xiàn)圖片的下載,使用,移除等功能的調(diào)用,我封裝了一個類ZYImageDownloader,并且已經(jīng)在github上開源,有興趣的伙伴可以直接前往下載
原理分析
其實SDWebImage內(nèi)部已經(jīng)幫我們實現(xiàn)了圖片下載的類,SDWebImageDownloader一個專門用來下載圖片的類,SDWebImagePrefetcher一個專門用來批量下載圖片的類
這里我們主要就是使用了SDWebImagePrefetcher來下載圖片,我們只需要將要下載的圖片地址傳入,SDWebImagePrefetcher就會幫我們將圖片逐個下載下來,并且緩存在本地,緩存的方式和我們通常使用的動態(tài)加載圖片一樣以url為key存儲
[[SDWebImagePrefetcher sharedImagePrefetcher] prefetchURLs:prefetchURLs progress:^(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls) {
} completed:^(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls) {
}];
當(dāng)我們需要使用對應(yīng)地址的圖片時,我們只需要以url為key來獲取圖片即可
NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:[NSURL URLWithString:imageURL]];
UIImage *image = [[SDImageCache sharedImageCache] imageFromCacheForKey:key];
return image;