SDWebImage github首頁(yè)翻譯

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)度指示器

GitHub - JJSaccolo/UIActivityIndicator-for-SDWebImage: The easiest way to add a UIActivityView to your SDWebImage view

安裝

有三種方法在項(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) 謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容