免費開源的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;
                                                              

                                                              97人人超人人超碰超中文|免看一级a一级久久|国产熟睡乱子伦午夜|卡通动漫久久五月天 久久婷婷五月综合色99啪 国产三级漂亮护士和男医生 国产夫妻原创视频 7m凹凸视频2019最新国产 5g国产激情久久久久老熟影院 青草99久久九九久久久久 光根电影院yy11111中文 亚洲野外无码理论片 国产激情久久久久影院