SDWebImage 概述
SDWebImage
提供一個(gè) UIImageView
的分類以支持加載來自互聯(lián)網(wǎng)的遠(yuǎn)程圖片励两。具有緩存管理囊颅、異步下載伐蒋,同一個(gè) URL
下載次數(shù)控制和優(yōu)化等特征迁酸。
獨(dú)立的異步圖像下載
可能會用到單獨(dú)的異步圖片下載先鱼,則一定要用
downloadImageWithURL:(nullable NSURL *)url
options:(SDWebImageDownloaderOptions)options
progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL)progressBlock
completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished)completedBlock;
來建立一個(gè)SDWebImageDownloader
的實(shí)例奸鬓。這樣就可以有下載進(jìn)度的回調(diào)和下載完成的回調(diào)焙畔,可以在回調(diào)完成進(jìn)度條相關(guān)的操作和顯示圖片相關(guān)的操作串远。
獨(dú)立的異步圖像緩存
SDImageCache
類提供一個(gè)管理緩存的單例類宏多。
SDImageCache *imageCache = [SDImageCache sharedImageCache];
查找和緩存圖片時(shí)以 URL
作為 key
澡罚。(先查找內(nèi)存伸但,如果內(nèi)存不存在該圖片留搔,再查找硬盤更胖;查找硬盤時(shí)隔显,以 URL
的 MD5
值作為 key
)却妨。
- 查找圖片:
UIImage *cacheImage = [imageCache cachePathForKey:myCacheKey];
- 緩存圖片:
[ imageCache storeImage:myImage forKey:myCacheKey];
默認(rèn)情況下括眠,圖片是被存儲到內(nèi)存緩存和磁盤緩存中的彪标。如果僅僅是想緩存到內(nèi)存中掷豺,可以用下面方法:
storeImage:(nullable UIImage *)image forKey:(nullable NSString *)key
toDisk:(BOOL)isDisk completion:^(void)completionBlock;
第三個(gè)參數(shù)傳 NO
即可捞烟。
主要用到的對象:
-
UIImageView(WebCache)
当船,入口封裝题画,實(shí)現(xiàn)讀取圖片完成后的回調(diào)。 -
SDWebImageManager
婴程,對圖片進(jìn)行管理的中轉(zhuǎn)站,記錄那些圖片正在讀取抱婉。向下層讀取Cache
(調(diào)用SDImageCache
)档叔,或者向網(wǎng)絡(luò)讀取對象(調(diào)用SDWebImageDownloader
)桌粉。實(shí)現(xiàn)SDImageCache
和SDWebImageDownLoader
的回調(diào)衙四。 -
SDImageCache
铃肯,根據(jù)URL
作為key
传蹈,對圖片進(jìn)行存儲和讀取【存在內(nèi)存(以URL
作為key
)和存在硬盤(以URL
的MD5
值作為key
)兩種】押逼,以及實(shí)現(xiàn)圖片磁盤緩存和內(nèi)存緩存清理工作惦界。
SDWebImage加載圖片的流程
SDWebImage加載圖片的流程具體可以參照下面的時(shí)序圖:
Author
如果你有什么建議挑格,可以關(guān)注我沾歪,直接留言漂彤,留言必回灾搏。