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

                                                欧美超级精品一级A片|欧美一级黄色视频|国产精品自在在线午夜免费|4444亚洲人成无码网在线观看|亚洲ⅴa曰本va欧美va视频