SDWebImage 使用:前端
一、sd_setImageWithURL:web
//圖片緩存的基本代碼,就是這麼簡單緩存
[self.image1 sd_setImageWithURL:imagePath1];fetch
2 、sd_setImageWithURL: completed:動畫
//用block 能夠在圖片加載完成以後作些事情線程
[self.image2 sd_setImageWithURL:imagePath2 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {code
NSLog(@"這裏能夠在圖片加載完成以後作些事情");orm
}];隊列
3 、sd_setImageWithURL: placeholderImage:事件
//給一張默認圖片,先使用默認圖片,當圖片加載完成後再替換
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"]];
4 、sd_setImageWithURL: placeholderImage: completed:
//使用默認圖片,並且用block 在完成後作一些事情
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
NSLog(@"圖片加載完成後作的事情");
}];
5 、sd_setImageWithURL: placeholderImage: options:
//options 選擇方式
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] options:SDWebImageRetryFailed];
其餘就不一一介紹了,oc是自文檔語言,看方法名就知道幹什麼的了。除了帶options選項的方法,其餘的方法都是綜合存儲,也就是內存緩存和磁盤緩存結合的方式,若是你只須要內存緩存,那麼在options這裏選擇SDWebImageCacheMemoryOnly就能夠了。
若是不想深刻了解,到這裏你已經能夠用SDWebimage進行圖片緩存了,接下來我要解釋options的全部選項,以及SDWebImage內部執行流程。
一,options全部選項:
//失敗後重試
SDWebImageRetryFailed = 1 << 0,
//UI交互期間開始下載,致使延遲下載好比UIScrollView減速。
SDWebImageLowPriority = 1 << 1,
//只進行內存緩存
SDWebImageCacheMemoryOnly = 1 << 2,
//這個標誌能夠漸進式下載,顯示的圖像是逐步在下載
SDWebImageProgressiveDownload = 1 << 3,
//刷新緩存
SDWebImageRefreshCached = 1 << 4,
//後臺下載
SDWebImageContinueInBackground = 1 << 5,
//NSMutableURLRequest.HTTPShouldHandleCookies = YES;
SDWebImageHandleCookies = 1 << 6,
//容許使用無效的SSL證書
//SDWebImageAllowInvalidSSLCertificates = 1 << 7,
//優先下載
SDWebImageHighPriority = 1 << 8,
//延遲佔位符
SDWebImageDelayPlaceholder = 1 << 9,
//改變更畫形象
SDWebImageTransformAnimatedImage = 1 << 10,
二,SDWebImage內部實現過程
從上面流程能夠看出,當你調用setImageWithURL:方法的時候,他會自動去給你幹這麼多事,當你須要在某一具體時刻作事情的時候,你能夠覆蓋這些方法。好比在下載某個圖片的過程當中要響應一個事件,就覆蓋這個方法:
//覆蓋方法,指哪打哪,這個方法是下載imagePath2的時候響應
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:imagePath2 options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {
NSLog(@"顯示當前進度");
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
NSLog(@"下載完成");
}];
對於初級來講,用sd_setImageWithURL:的若干個方法就能夠實現很好的圖片緩存。