SDWebImage探究(一)

版本記錄

版本號(hào) 時(shí)間
V1.0 2017.07.13

前言

我們做APP,文字和圖片是絕對(duì)不可缺少的元素轿塔,特別是圖片一般存儲(chǔ)在圖床里面特愿,一般公司可以委托第三方保存,NB的公司也可以自己存儲(chǔ)圖片勾缭,ios有很多圖片加載的第三方框架揍障,其中最優(yōu)秀的莫過(guò)于SDWebImage,它幾乎可以滿(mǎn)足你所有的需求俩由,用了好幾年這個(gè)框架毒嫡,今天想總結(jié)一下。

一采驻、SDWebImage初探

??我們先看一下SDWebImage在github的作者及其主要功能审胚。
SDWebImage github地址

下面我們看一下

SDWebImage

??可以看到匈勋,18K+個(gè)star,9天以前剛更新過(guò)膳叨。他的功能描述是:異步圖像下載并且?guī)в芯彺鏅C(jī)制洽洁,是UIImageView的一個(gè)分類(lèi)。

下面我們就看一下作者Olivier Poitrey
菲嘴。

作者

可見(jiàn)饿自,作者寫(xiě)了好多種框架,涉及到OC語(yǔ)言龄坪、CoffeeScript和GO語(yǔ)言昭雌。

二、SDWebImage功能框架

1.框架特征

  • 類(lèi)別UIImageView健田,UIButton烛卧,MKAnnotationView- - 添加Web圖像和高速緩存管理
  • 異步圖像下載器
  • 具有自動(dòng)緩存到期處理的異步內(nèi)存+磁盤(pán)映像緩存
  • 背景圖像解壓縮
  • 保證相同的URL不會(huì)被下載多次
  • 保證虛假網(wǎng)址不會(huì)重復(fù)重試
  • 保證主線程永遠(yuǎn)不會(huì)被阻止
  • 使用GCD和ARC

2. 支持的圖像格式

  • UIImage(JPEG,PNG妓局,...)支持的圖像格式总放,包括GIF
  • WebP格式,包括動(dòng)畫(huà)WebP(使用WebPsubspec)

3. 使用方法

Objective-C的:

#進(jìn)口 < SDWebImage /的UIImageView + WebCache.h >
...
[ imageView sd_setImageWithURL: [ NSURL  URLWithString:@“ http://www.domain.com/path/to/image.jpg ” ]
              placeholderImage: [UIImage imageNamed:@“ placeholder.png ” ]];
斯威夫特:

導(dǎo)入 SDWebImage

ImageView的好爬。sd_setImage(有:URL(字符串:“ http://www.domain.com/path/to/image.jpg ”)局雄,placeholderImage:UIImage的(命名為:“ placeholder.png ”))

4. GIF的支持

  • 從4.0版本開(kāi)始,我們依靠FLAnimatedImage來(lái)照顧我們的動(dòng)畫(huà)圖像存炮。
  • 如果您使用pod 'SDWebImage/GIFCocapods 炬搭,請(qǐng)?zhí)砑拥侥膒odfile。
  • 要使用它穆桂,只需確保使用FLAnimatedImageView
    而不是UIImageView宫盔。
  • 注意:有一個(gè)向后兼容的功能,所以如果你仍然試圖加載一個(gè)GIF UIImageView充尉,它將只顯示第一幀作為靜態(tài)圖像飘言。
  • 重要提示:FLAnimatedImage僅適用于iOS平臺(tái),因此對(duì)于所有其他平臺(tái)(OS X驼侠,tvOS,watchOS)谆吴,我們將回退到上述向后兼容性功能倒源。

5. 處理圖像刷新

??默認(rèn)情況下,SDWebImage執(zhí)行非常積極的緩存句狼。它忽略HTTP服務(wù)器返回的各種緩存控制頭笋熬,并緩存返回的圖像,而不受時(shí)間限制腻菇。這意味著您的圖像URL是指向永遠(yuǎn)不會(huì)改變的圖像的靜態(tài)網(wǎng)址东且。如果指示的圖像發(fā)生變化叛甫,則網(wǎng)址的某些部分應(yīng)相應(yīng)更改趁猴。

??如果您無(wú)法控制您正在使用的映像服務(wù)器,那么當(dāng)內(nèi)容更新時(shí)秘遏,您可能無(wú)法更改該URL。例如嘉竟,F(xiàn)acebook頭像URL就是這種情況邦危。在這種情況下,您可以使用該SDWebImageRefreshCached標(biāo)志舍扰。這將稍微降低性能倦蚪,但會(huì)尊重HTTP緩存控制頭:

[ imageView sd_setImageWithURL: [ NSURL  URLWithString:@“ https://graph.facebook.com/olivier.poitrey/picture ” ]
              placeholderImage: [UIImage imageNamed:@“ avatar-placeholder.png ” ]
                       選項(xiàng): SDWebImageRefreshCached];

6.添加進(jìn)度指示器

下面我們就添加進(jìn)度指示器。

[ imageView sd_setShowActivityIndi??catorView:YES ];
[ imageView sd_setIndicatorStyle: UIActivityIndi??catorViewStyleGray];


ImageView的边苹。sd_setShowActivityIndi??catorView(true)
ImageView的陵且。sd_setIndicatorStyle(。Gray)

7. 安裝方法

下面就說(shuō)一下SDWebImage的安裝方法个束。在您的項(xiàng)目中使用SDWebImage有三種方法:

  • 使用CocoaPods
  • 使用迦太基
  • 通過(guò)將項(xiàng)目克隆到您的存儲(chǔ)庫(kù)中

通過(guò)cocoapods安裝

CocoaPods是Objective-C的依賴(lài)管理器滩报,它可以自動(dòng)化并簡(jiǎn)化在項(xiàng)目中使用第三方庫(kù)的過(guò)程。有關(guān)詳細(xì)信息播急,請(qǐng)參閱“ 入門(mén)”部分脓钾。

platform :ios, '7.0'
pod 'SDWebImage', '~>3.8'

如果您使用Swift,請(qǐng)確保添加use_frameworks!并將目標(biāo)設(shè)置為iOS 8+

platform :ios, '8.0'
use_frameworks!

Subspecs

有可供4個(gè)subspecs現(xiàn)在:Core桩警,MapKit可训,GIFWebP

pod 'SDWebImage/WebP

使用Carthage安裝(iOS 8+)

Carthage是Swift和Objective-C的輕量級(jí)依賴(lài)管理員捶枢。
它利用CocoaTouch模塊握截,并且比CocoaPods的侵入性更小。

github "rs/SDWebImage"

通過(guò)克隆存儲(chǔ)庫(kù)安裝

直接拖入到工程中就可以了烂叔,就不多說(shuō)了谨胞。

8. 工程架構(gòu)

下面就看一下工程架構(gòu)。

架構(gòu)1
架構(gòu)2

下面我們就看一下SDWebImage框架包含哪些文件蒜鸡。

框架結(jié)構(gòu)1
框架結(jié)構(gòu)2

后記

??這里我們就簡(jiǎn)單的介紹一下作者和框架胯努,后面我還會(huì)深入的說(shuō)一下該框架的原理和深入內(nèi)容,希望對(duì)大家有所幫助逢防。未完叶沛,待續(xù)~~~

風(fēng)景
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市忘朝,隨后出現(xiàn)的幾起案子灰署,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溉箕,死亡現(xiàn)場(chǎng)離奇詭異晦墙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)肴茄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)晌畅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人独郎,你說(shuō)我怎么就攤上這事踩麦。” “怎么了氓癌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵谓谦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我贪婉,道長(zhǎng)反粥,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任疲迂,我火速辦了婚禮才顿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尤蒿。我一直安慰自己郑气,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布腰池。 她就那樣靜靜地躺著尾组,像睡著了一般。 火紅的嫁衣襯著肌膚如雪示弓。 梳的紋絲不亂的頭發(fā)上讳侨,一...
    開(kāi)封第一講書(shū)人閱讀 52,895評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音奏属,去河邊找鬼跨跨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛囱皿,可吹牛的內(nèi)容都是我干的勇婴。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼铆帽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咆耿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起爹橱,我...
    開(kāi)封第一講書(shū)人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后愧驱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體慰技,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年组砚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吻商。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糟红,死狀恐怖艾帐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盆偿,我是刑警寧澤柒爸,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站事扭,受9級(jí)特大地震影響捎稚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜求橄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一今野、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罐农,春花似錦条霜、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至溯乒,卻和暖如春夹厌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裆悄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工矛纹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人光稼。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓或南,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親艾君。 傳聞我的和親對(duì)象是個(gè)殘疾皇子采够,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容