SDWebImage
此庫(kù)提供UIImageView類別來(lái)支持網(wǎng)絡(luò)遠(yuǎn)程下載圖像。
以下為提供的功能:
* UIImageView類別添加基于Cocoa Touch框架的Web圖像緩存管理。
* 異步圖像下載
* 擁有自動(dòng)緩存過(guò)期處理的異步內(nèi)存/磁盤圖像緩存暴构,
* 支持動(dòng)畫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背后的類喘先。它將圖像緩存存儲(chǔ)和異步下載聯(lián)系在一起钳吟。您可以直接使用這個(gè)類來(lái)從網(wǎng)頁(yè)下載圖像收益。也可以緩存在另一個(gè)上下文而不是UIView窘拯。
單獨(dú)使用異步圖像下載器
單獨(dú)使用異步圖像緩存
SDImageCache維持了內(nèi)存緩存和可選的磁盤緩存红且。
可以用queryDiskCacheForKey:done: 來(lái)查看磁盤緩存。
如果返回為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)不到圖像的情況下 查詢磁盤緩存壁酬。你可以禁止這一操作發(fā)生通過(guò)調(diào)用另一可選方法imageFromMemoryCacheForKey
為了將圖像存儲(chǔ)在緩存里,你可以使用storeImage:forKey:方法恨课,如下:
默認(rèn)的舆乔,圖像會(huì)異步的存儲(chǔ)在內(nèi)存緩存和磁盤緩存中,如果你只想要保存在內(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刪除所有的查詢字符串之后用作緩存鍵過(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)完成了非常積極的緩存橘原。它忽略了所有類型的緩存控制頭部的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的依賴管理者星澳,能自動(dòng)化并簡(jiǎn)化在項(xiàng)目中使用第三方庫(kù)的過(guò)程中依賴管理。
Subspecs
有3個(gè)subspaces可以使用:Core, MapKit, WebP (這意味你可以只安裝一部分的SDWebImage模塊旱易。默認(rèn)只有Core禁偎,如果你想用WebP,你需要特別指定)
pod ’SDWebImage/WebP’
用Carthage安裝
Carthage是個(gè)輕量級(jí)版本依賴管理者
有許多地方太過(guò)于懶得翻譯了阀坏,不便之處請(qǐng)多提意見(jiàn) 謝謝!