版本記錄
版本號(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地址
下面我們看一下
??可以看到匈勋,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/GIF
Cocapods 炬搭,請(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
可训,GIF
和WebP
。
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)。
下面我們就看一下SDWebImage框架包含哪些文件蒜鸡。
后記
??這里我們就簡(jiǎn)單的介紹一下作者和框架胯努,后面我還會(huì)深入的說(shuō)一下該框架的原理和深入內(nèi)容,希望對(duì)大家有所幫助逢防。未完叶沛,待續(xù)~~~