SDWebImage中文說明

WebImage

前端時間想詳細的瞭解下AFNetworking庫,因此想着看看官方的API吧。想一想既然看看就作下筆記吧,既然作了筆記爲什麼不試着翻譯一下呢。而後就有了以前的文章《AFNetworking說明書》. 以後忽然有時間以爲空閒了,就想着再看一篇API文檔吧。 選中了《SDWebImage說明書》這篇文章。選中這個緣由是使用的多,而且評論說代碼風格好。與AFNetworking說明書不分上下。前端

推薦下本身的文章哈。有興趣的能夠看看,固然本人英文菜鳥,翻譯不對的地方,請多多賜教。ios

涉及到的類,分類和協議須要點擊跳轉到新頁面查看。git

這個庫提供一個具備緩存功能的異步圖片下載器。爲了方便,咱們添加了UI元素的分類,如UIImageView, UIButton, MKAnnotationView。github

特性

  • 建立分類爲UIImageView,UIButton,MKAnnotationView增長網絡圖片和緩存管理。
  • 一個異步的圖片下載器。
  • 一個具備自動緩存過時處理的異步內存+磁盤的圖片緩存。
  • 一個後臺的圖片解壓器。
  • 確保相同的URL不會下載屢次。
  • 確保錯誤的URL不會一次又一次的重試。
  • 確保主線程不會被阻塞。
  • 性能優化。
  • 使用GCD 和 ARC。

支持圖片格式化

  • 由UIImage支持的圖片格式,如JPEG,PNG等,包括GIF。
  • WebP格式,包含動態WebP(使用WebP子空間)。

要求

  • iOS 7.0或以上版本
  • tvOS 9.0或以上版本
  • watchOS 2.0或以上版本
  • OS X10.8或以上版本
  • Xcode7.3或以上版本

向後兼容web

  • iOS5和6版本,使用3.想到3.7.6之間的任意版本。
  • 小於iOS5.0的版本,請使用最後的2.0版本。

開始

  • 閱讀「Readme文檔」。
  • 閱讀「若是使用章節」。
  • 閱讀「@CocoaDocs文檔」。
  • 閱讀「爲什麼SDWebImage比X好」。
  • 從Github下載工程或使用CocoaPods更簡單嘗試SDWebImage樣例。
  • 查看「安裝步驟」。
  • 閱讀「SDWebImage4.0遷移導向」瞭解3.x到4.x的變化。

誰在使用

  • 找出「誰在使用SDWebImage」並添加你的app到列表中。

交流

  • 若是你須要幫助,請使用Stack Overflow。(‘sdwebiamge’標籤)
  • 若是你想詢問通常的問題,請使用Stack Overflow。
  • 若是有發現一個bug,請新開一個問題。
  • 若是你有一個特性請求,請新開一個問題。
  • 若是有想投稿,請提交一個pull請求。

怎麼使用

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"))
複製代碼
  • 想了解怎麼使用這個庫和清晰示例的詳細信息,詳見「怎麼使用的詳情」。

動畫圖片(GIF)支持

  • 從4.0版本開始,咱們依賴FLAnimatedImage來處理咱們的動畫圖像。
  • 若是你使用cocoapods,添加‘SDWebImage/GIF’到你的podfile文件。
  • 使用它,只需確保你使用FLAnimatedImageView代替UIImageView。
  • **注意:**有一個向後兼容特性,因此若是你任然嘗試加載GIF到UIImageView中,它只會顯示第一幀的靜態圖片。
  • **重要:**FLAnimatedImage只工做在iOS平臺。在OX X系統,使用NSImageView並設置animates爲YES來顯示整個動畫圖片,設置爲NO則只顯示第一幀。其餘的全部平臺(tvOS,watchOS),咱們會退回到上面描述的向後兼容特性。

常見問題

UITableViewCell中使用動態圖片大小

UITableView經過檢測第一張圖片的大小來設置一個單元格。若是你的遠程圖片與你的默認圖片大小不一致,有可能碰到奇怪的圖片變形問題。如下的文章提供了一個解決這個問題的思路:[www.wrichards.com/blog/2011/1…](www.wrichards.com/blog/2011/1…).bash

處理圖片刷新

SDWebImage默認具備很是強烈的緩存機制。它會忽略HTTP服務器返回中控制頭的全部緩存類型,將無限制的緩存返回的圖片。它意味着你的圖片URLS是靜態的URLS並指向毫不會修改的圖片。若是指向的圖片發生了改變,URL部分也應該相應的修改。 若是你沒有控制你正在使用的圖片服務器,那麼當圖片內容發生修改時你不能修改圖片的URL。這種狀況以Facebook的頭像URLS爲例。這種狀況下,你可使用SDWebImageRefreshCached標籤。這將稍微下降性能可是將遵照HTTP緩存控制頭:服務器

[imageView sd_setImageWithURL:[NSURL URLWithString:@"https://graph.facebook.com/olivier.poitrey/picture"]
             placeholderImage:[UIImage imageNamed:@"avatar-placeholder.png"]
                      options:SDWebImageRefreshCached];
複製代碼

添加一個進度指示器

在你調用sd_setImageWithURL以前添加如下代碼網絡

[imageView sd_setShowActivityIndicatorView:YES];
[imageView sd_setIndicatorStyle:UIActivityIndicatorViewStyleGray];
複製代碼
imageView.sd_setShowActivityIndicatorView(true)
imageView.sd_setIndicatorStyle(.Gray)
複製代碼

安裝

一共有3個方法在你的工程中使用SDWebImage:

  • 使用CocoaPods
  • 使用Carthage
  • 經過克隆工程添加到你的倉庫

PODFILE

platfrom :ios, '7.0'
pod 'SDWebImage', '~> 4.0'
複製代碼

若是你在使用Swift,確保添加了use_frameworks!和設置目標版本爲iOS 8+:

platform: ios, '8.0'
use_frameworks!
複製代碼

SUBSPECS 如今有4個有效的子模塊:Core,MapKit,GIF和WebP(這意味着你能夠只安裝SDWebImage的指定模塊。默認,你只獲取Core模塊,因此若是你須要WebP,你須要指定它)。 Podfile樣例:

pod 'SDWebImage/WebP'
複製代碼

CARTFILE

github "rs/SDWebImage"
複製代碼

經過克隆倉庫安裝

  • 詳見「手動安裝」。

在你的源文件中引入頭文件

在你須要使用這個庫的源文件中,引入頭文件:

##import <SDWebImage/UIImageView+WebCache.h>
複製代碼

編譯工程

這點呢,你的工做空間編譯不能有錯誤。若是你有問題,發送你的問題,社區能夠幫助你解決它。

做者

  • Olivier Poitrey

合做者

  • Konstantinos K.
  • Bogdan Poplauschi
  • Chester Liu

許可

全部源代碼的許可都在MIT許可中。

架構

類圖表

時序圖表

類說明

協議說明

分類說明

常量說明

// END 拉下閱讀量而已,沒有乾貨。 接下去想學習下YY大神的代碼,但願可以堅持看完吧。Come on!!!

相關文章
相關標籤/搜索