免費開源的iOS開發學習平臺

網絡圖片下載SDK:SDWebImage

在實際的App開發中,界面顯示的圖片除了少量的本地圖片外,絕大多數圖片都需要通過網絡從服務器下載。對于網絡圖片下載的處理邏輯需要考慮諸多因素,例如網絡傳輸因素、圖片緩存等,通常情況下我們都會使用SDWebImage來完成網絡圖片的下載。本節簡單介紹一下SDWebImage的基本使用,全球超過90%的App都會存在SDWebImage的身影。

SDWebImage的下載與安裝

從Github中搜索關鍵字:SDWebImage,即可找到SDWebImage的版本倉庫;

SDWebImage的安裝支持使用CocoaPods、Carthage以及手工方式安裝,以CocoaPods為例,需要在工程的Podfile文件中添加如下內容,然后更新下載即可。

platform :ios, '7.0'
pod 'SDWebImage', '~>3.8'

SDWebImage是對UIImageView類增加了分類。在需要使用圖片下載的類中,引用SDWebImage頭文件即可對UIImageView對象使用擴展的方法。

#import <SDWebImage/UIImageView+WebCache.h>

SDWebImage中的核心方法

SDWebImage提供了極其簡單的方法用于下載網絡圖片,最簡單的情況下,只要提供圖片素材的URL即可。SDWebImage提供的常見下載圖片方法如下:

  • 最簡單的方法,只需要提供圖片的網絡地址以及占位圖即可
-(void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder;
  • 指定圖片下載的相關操作。在該方法中,需要傳入一個SDWebImageOptions類型的參數,該參數中定義了有關圖片下載的操作,例如,失敗后是否重試、是否緩存、優先級等等。
-(void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options;
  • 在block中定義圖片下載成功后的后續操作
-(void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock;
  • 在圖片下載過程中,獲取圖片下載的進度。例如我們可以添加一個進度條,提示用戶圖片下載的進度。
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock;

圖片緩存管理

SDWebImage提供了緩存機制,即下載過的圖片,當需要再次顯示時,SDWebImage會優先從緩存中查找是否有存儲圖片。SDWebImage使用的緩存即包括在內存中的緩存,也包括在應用沙盒中的緩存(硬盤中的緩存)。緩存機制的存在一方面加快了圖片下載的速度,為用戶節省了流量,但另外一方面也會帶來存儲空間的浪費,因此在SDWebImage中,也提供了用于緩存管理的類--SDImageCache。在SDImageCache類中,提供了如下幾個常用的方法。

  • 內存中緩存的大小
@property (assign, nonatomic) NSUInteger maxMemoryCost;
  • 硬盤緩存的大小
@property (assign, nonatomic) NSUInteger maxCacheSize;
  • 緩存保存的時間,單位:秒
@property (assign, nonatomic) NSInteger maxCacheAge;
  • 清除內存中的緩存
- (void)clearMemory;
  • 清除硬盤中的所有緩存圖片
- (void)clearDisk;
  • 清除硬盤中過期的緩存圖片
- (void)cleanDisk;

日韩av 中文字幕 1_亚洲第一区在线_亚洲V日韩V精品v无码专区_色鬼久久亚洲AV综合