前端時(shí)間想詳細(xì)的了解下AFNetworking庫(kù)壳繁,所以想著看看官方的API吧绷杜。想想既然看看就做下筆記吧垃瞧,既然做了筆記為何不試著翻譯一下呢。然后就有了之前的文章《AFNetworking說(shuō)明書》. 之后突然有時(shí)間覺得空閑了,就想著再看一篇API文檔吧吭产。
選中了《SDWebImage說(shuō)明書》這篇文章侣监。選中這個(gè)原因是使用的多,并且評(píng)論說(shuō)代碼風(fēng)格好臣淤。與AFNetworking說(shuō)明書不分上下橄霉。
推薦下自己的文章哈。有興趣的可以看看邑蒋,當(dāng)然本人英文菜鳥姓蜂,翻譯不對(duì)的地方,請(qǐng)多多賜教医吊。
涉及到的類钱慢,分類和協(xié)議需要點(diǎn)擊跳轉(zhuǎn)到新頁(yè)面查看。
這個(gè)庫(kù)提供一個(gè)具有緩存功能的異步圖片下載器卿堂。為了方便束莫,我們添加了UI元素的分類,如UIImageView, UIButton, MKAnnotationView草描。
特性
- 創(chuàng)建分類為UIImageView览绿,UIButton,MKAnnotationView增加網(wǎng)絡(luò)圖片和緩存管理穗慕。
- 一個(gè)異步的圖片下載器饿敲。
- 一個(gè)具有自動(dòng)緩存過期處理的異步內(nèi)存+磁盤的圖片緩存。
- 一個(gè)后臺(tái)的圖片解壓器逛绵。
- 確保相同的URL不會(huì)下載多次怀各。
- 確保錯(cuò)誤的URL不會(huì)一次又一次的重試。
- 確保主線程不會(huì)被阻塞暑脆。
- 性能優(yōu)化渠啤。
- 使用GCD 和 ARC。
支持圖片格式化
- 由UIImage支持的圖片格式添吗,如JPEG,PNG等份名,包括GIF碟联。
- WebP格式,包含動(dòng)態(tài)WebP(使用WebP子空間)僵腺。
要求
- iOS 7.0或以上版本
- tvOS 9.0或以上版本
- watchOS 2.0或以上版本
- OS X10.8或以上版本
- Xcode7.3或以上版本
向后兼容
- iOS5和6版本鲤孵,使用3.想到3.7.6之間的任意版本。
- 小于iOS5.0的版本辰如,請(qǐng)使用最后的2.0版本普监。
開始
- 閱讀“Readme文檔”。
- 閱讀“如果使用章節(jié)”。
- 閱讀“@CocoaDocs文檔”凯正。
- 閱讀“為何SDWebImage比X好”毙玻。
- 從Github下載工程或使用CocoaPods更簡(jiǎn)單嘗試SDWebImage樣例。
- 查看“安裝步驟”廊散。
- 閱讀“SDWebImage4.0遷移導(dǎo)向”了解3.x到4.x的變化桑滩。
睡在使用
- 找出“誰(shuí)在使用SDWebImage”并添加你的app到列表中。
交流
- 如果你需要幫助允睹,請(qǐng)使用Stack Overflow运准。(‘sdwebiamge’標(biāo)簽)
- 如果你想詢問一般的問題,請(qǐng)使用Stack Overflow缭受。
- 如果有發(fā)現(xiàn)一個(gè)bug胁澳,請(qǐng)新開一個(gè)問題。
- 如果你有一個(gè)特性請(qǐng)求米者,請(qǐng)新開一個(gè)問題韭畸。
- 如果有想投稿,請(qǐng)?zhí)峤灰粋€(gè)pull請(qǐng)求塘雳。
怎么使用
Objective-c
#import <SDWebImage/UIImageView+WebCache.h>
...
[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
Swift
import SDWebImage
imageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))
- 想了解怎么使用這個(gè)庫(kù)和清晰示例的詳細(xì)信息陆盘,詳見“怎么使用的詳情”。
動(dòng)畫圖片(GIF)支持
- 從4.0版本開始败明,我們依賴FLAnimatedImage來(lái)處理我們的動(dòng)畫圖像隘马。
- 如果你使用cocoapods,添加‘SDWebImage/GIF’到你的podfile文件妻顶。
- 使用它酸员,只需確保你使用FLAnimatedImageView代替UIImageView。
- 注意:有一個(gè)向后兼容特性讳嘱,所以如果你任然嘗試加載GIF到UIImageView中幔嗦,它只會(huì)顯示第一幀的靜態(tài)圖片。
- 重要:FLAnimatedImage只工作在iOS平臺(tái)沥潭。在OX X系統(tǒng)邀泉,使用NSImageView并設(shè)置animates為YES來(lái)顯示整個(gè)動(dòng)畫圖片,設(shè)置為NO則只顯示第一幀钝鸽。其他的所有平臺(tái)(tvOS汇恤,watchOS),我們會(huì)退回到上面描述的向后兼容特性拔恰。
常見問題
UITableViewCell中使用動(dòng)態(tài)圖片大小
UITableView通過檢測(cè)第一張圖片的大小來(lái)設(shè)置一個(gè)單元格因谎。如果你的遠(yuǎn)程圖片與你的默認(rèn)圖片大小不一致,有可能碰到奇怪的圖片變形問題颜懊。以下的文章提供了一個(gè)解決這個(gè)問題的思路:http://www.wrichards.com/blog/2011/11/sdwebimage-fixed-width-cell-images/.
處理圖片刷新
SDWebImage默認(rèn)具有非常強(qiáng)烈的緩存機(jī)制财岔。它會(huì)忽略HTTP服務(wù)器返回中控制頭的所有緩存類型风皿,將無(wú)限制的緩存返回的圖片。它意味著你的圖片URLS是靜態(tài)的URLS并指向絕不會(huì)修改的圖片匠璧。如果指向的圖片發(fā)生了改變桐款,URL部分也應(yīng)該相應(yīng)的修改。
如果你沒有控制你正在使用的圖片服務(wù)器患朱,那么當(dāng)圖片內(nèi)容發(fā)生修改時(shí)你不能修改圖片的URL鲁僚。這種情況以Facebook的頭像URLS為例。這種情況下裁厅,你可以使用SDWebImageRefreshCached標(biāo)簽冰沙。這將稍微降低性能但是將遵守HTTP緩存控制頭:
[imageView sd_setImageWithURL:[NSURL URLWithString:@"https://graph.facebook.com/olivier.poitrey/picture"]
placeholderImage:[UIImage imageNamed:@"avatar-placeholder.png"]
options:SDWebImageRefreshCached];
添加一個(gè)進(jìn)度指示器
在你調(diào)用sd_setImageWithURL之前添加以下代碼
[imageView sd_setShowActivityIndicatorView:YES];
[imageView sd_setIndicatorStyle:UIActivityIndicatorViewStyleGray];
imageView.sd_setShowActivityIndicatorView(true)
imageView.sd_setIndicatorStyle(.Gray)
安裝
一共有3個(gè)方法在你的工程中使用SDWebImage:
- 使用CocoaPods
- 使用Carthage
- 通過克隆工程添加到你的倉(cāng)庫(kù)
PODFILE
platfrom :ios, '7.0'
pod 'SDWebImage', '~> 4.0'
如果你在使用Swift,確保添加了use_frameworks!和設(shè)置目標(biāo)版本為iOS 8+:
platform: ios, '8.0'
use_frameworks!
SUBSPECS
現(xiàn)在有4個(gè)有效的子模塊:Core执虹,MapKit拓挥,GIF和WebP(這意味著你可以只安裝SDWebImage的指定模塊。默認(rèn)袋励,你只獲取Core模塊侥啤,所以如果你需要WebP,你需要指定它)茬故。
Podfile樣例:
pod 'SDWebImage/WebP'
CARTFILE
github "rs/SDWebImage"
通過克隆倉(cāng)庫(kù)安裝
- 詳見“手動(dòng)安裝”盖灸。
在你的源文件中引入頭文件
在你需要使用這個(gè)庫(kù)的源文件中,引入頭文件:
##import <SDWebImage/UIImageView+WebCache.h>
編譯工程
這點(diǎn)呢磺芭,你的工作空間編譯不能有錯(cuò)誤赁炎。如果你有問題,發(fā)送你的問題钾腺,社區(qū)可以幫助你解決它徙垫。
作者
- Olivier Poitrey
合作者
- Konstantinos K.
- Bogdan Poplauschi
- Chester Liu
許可
所有源代碼的許可都在MIT許可中。
架構(gòu)
類說(shuō)明
- SDImageCache
- SDImageCacheConfig
- SDWebImageDownloadToken
- SDWebImageDownloader
- SDWebImageDownloaderOperation
- SDWebImageManager
- SDWebImagePrefetcher
協(xié)議說(shuō)明
- SDWebImageDownloaderOperationInterface
- SDWebImageManagerDelegate
- SDWebImageOperation
- SDWebImagePrefetcherDelegate
分類說(shuō)明
- FLAnimatedImageView(WebCache)
- MKAnnotationView(WebCache)
- NSData(ImageContentType)
- NSImage(WebCache)
- UIButton(WebCache)
- UIImage(ForceDecode)
- UIImage(GIF)
- UIImage(MultiFormat)
- UIImage(WebP)
- UIImageView(HighlightedWebCache)
- UIImageView(Webcache)
- UIView(WebCache)
- UIView(WebCacheOperation)
常量說(shuō)明
- SDImageCacheType
- SDImageFormat
- SDWebImageDownloaderExecutionOrder
- SDWebImageDownloaderOptions
- SDWebImageOptions
// END 拉下閱讀量而已放棒,沒有干貨姻报。 接下去想學(xué)習(xí)下YY大神的代碼,希望能夠堅(jiān)持看完吧间螟。Come onN庑!厢破!