SDWebImage
此庫(kù)提供UIImageView類(lèi)別來(lái)支持網(wǎng)絡(luò)遠(yuǎn)程下載圖像。
以下為提供的功能:
* UIImageView類(lèi)別添加基于Cocoa Touch框架的Web圖像緩存管理。
* 異步圖像下載
* 擁有自動(dòng)緩存過(guò)期處理的異步內(nèi)存/磁盤(pán)圖像緩存,
* 支持動(dòng)畫(huà)GIF
* 支持WebP格式
* 解壓背景圖像
* 保證相同的URL不會(huì)被下載多次
* 保證假的網(wǎng)址將不被一次又一次地重試
* 保證,主線程將不會(huì)被阻止
* 性能好
* 使用GCD和ARC
* 支持Arm64
UITableView使用UIImageView+WebCache
只需要import UIImageView+WebCache.h之后
調(diào)用sd_setImageWithURL:placeholderImage:
使用Blocks
有了blocks,你可以知道圖像下載的過(guò)程和什么時(shí)候圖像取得結(jié)束。
Note: 如果是自行取消的話,success和failure的block都不會(huì)調(diào)用
使用SDWebImageManager
該SDWebImageManager是UIImageView+WebCache背后的類(lèi)。它將圖像緩存存儲(chǔ)和異步下載聯(lián)系在一起。您可以直接使用這個(gè)類(lèi)來(lái)從網(wǎng)頁(yè)下載圖像收益。也可以緩存在另一個(gè)上下文而不是UIView。

單獨(dú)使用異步圖像下載器

單獨(dú)使用異步圖像緩存
SDImageCache維持了內(nèi)存緩存和可選的磁盤(pán)緩存。
可以用queryDiskCacheForKey:done: 來(lái)查看磁盤(pán)緩存。
如果返回為nil 意味著當(dāng)前緩存沒(méi)有這張圖片。
所以你需要負(fù)責(zé)生成圖像并緩存圖像。
緩存的鍵是應(yīng)用中獨(dú)有的標(biāo)識(shí),基本上是圖像的絕對(duì)路徑。
默認(rèn)來(lái)說(shuō)SDImageCache會(huì)在內(nèi)存緩存中發(fā)現(xiàn)不到圖像的情況下 查詢(xún)磁盤(pán)緩存。你可以禁止這一操作發(fā)生通過(guò)調(diào)用另一可選方法imageFromMemoryCacheForKey
為了將圖像存儲(chǔ)在緩存里,你可以使用storeImage:forKey:方法,如下:

默認(rèn)的,圖像會(huì)異步的存儲(chǔ)在內(nèi)存緩存和磁盤(pán)緩存中,如果你只想要保存在內(nèi)存中,使用可選擇方案storeImage:forKey:toDisk: 傳空的第三個(gè)參數(shù)。
使用緩存鍵過(guò)濾器
有時(shí),你可能不希望使用圖像的URL作為緩存鍵,因?yàn)閁RL的一部分是變動(dòng)的(換句話說(shuō):訪問(wèn)控制的目的)。SDWebImageManager提供了一種方法來(lái)設(shè)置緩存鍵過(guò)濾器,取NSURL作為輸入,輸出一個(gè)緩存鍵NSString。
下面的示例在application delegate里將URL刪除所有的查詢(xún)字符串之后用作緩存鍵過(guò)濾器:

常見(jiàn)問(wèn)題
在UITableViewCell使用動(dòng)態(tài)圖像尺寸
UITableView通過(guò)用于小區(qū)中的第一圖像組確定圖像的大小。如果你的遠(yuǎn)程圖像沒(méi)有大小的占位符圖像相同,您可能會(huì)遇到奇怪的變形比例問(wèn)題。下面這篇文章給出了一個(gè)方法來(lái)解決此問(wèn)題(翻譯略)
控制圖像刷新
SDWebImage默認(rèn)完成了非常積極的緩存。它忽略了所有類(lèi)型的緩存控制頭部的HTTP服務(wù)器返回,并且沒(méi)有時(shí)間限制緩存返回的圖像。這意味著你的圖片網(wǎng)址指向,從來(lái)沒(méi)有改變圖像靜態(tài)URL。如果尖圖像發(fā)生變化,部分URL應(yīng)該相應(yīng)地改變。
如果你不控制你正在使用的圖像服務(wù)器,您可能無(wú)法更改URL時(shí),它的內(nèi)容更新。這是用于例如實(shí)化身的URL的情況。在這種情況下,你可以使用SDWebImageRefreshCached標(biāo)志。這將略微降低性能,但會(huì)尊重HTTP緩存控制頭:

添加一個(gè)進(jìn)度指示器
安裝
有三種方法在項(xiàng)目中使用SDWebImage:
* 使用的CocoaPods
* 復(fù)制所有文件到您的項(xiàng)目
* 導(dǎo)入項(xiàng)目作為靜態(tài)庫(kù)
用CocoaPods安裝
CocoaPods是Objective-C的依賴(lài)管理者,能自動(dòng)化并簡(jiǎn)化在項(xiàng)目中使用第三方庫(kù)的過(guò)程中依賴(lài)管理。

Subspecs
有3個(gè)subspaces可以使用:Core, MapKit, WebP (這意味你可以只安裝一部分的SDWebImage模塊。默認(rèn)只有Core,如果你想用WebP,你需要特別指定)
pod ’SDWebImage/WebP’
用Carthage安裝
Carthage是個(gè)輕量級(jí)版本依賴(lài)管理者
有許多地方太過(guò)于懶得翻譯了,不便之處請(qǐng)多提意見(jiàn) 謝謝!