前端時間想詳細的瞭解下AFNetworking庫,因此想着看看官方的API吧。想一想既然看看就作下筆記吧,既然作了筆記爲什麼不試着翻譯一下呢。而後就有了以前的文章《AFNetworking說明書》. 以後忽然有時間以爲空閒了,就想着再看一篇API文檔吧。 選中了《SDWebImage說明書》這篇文章。選中這個緣由是使用的多,而且評論說代碼風格好。與AFNetworking說明書不分上下。前端
推薦下本身的文章哈。有興趣的能夠看看,固然本人英文菜鳥,翻譯不對的地方,請多多賜教。ios
涉及到的類,分類和協議須要點擊跳轉到新頁面查看。git
這個庫提供一個具備緩存功能的異步圖片下載器。爲了方便,咱們添加了UI元素的分類,如UIImageView, UIButton, MKAnnotationView。github
向後兼容web
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"))
複製代碼
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:
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>
複製代碼
這點呢,你的工做空間編譯不能有錯誤。若是你有問題,發送你的問題,社區能夠幫助你解決它。
全部源代碼的許可都在MIT許可中。
// END 拉下閱讀量而已,沒有乾貨。 接下去想學習下YY大神的代碼,但願可以堅持看完吧。Come on!!!