<button id="9slfp"><object id="9slfp"></object></button>
<button id="9slfp"><object id="9slfp"><menuitem id="9slfp"></menuitem></object></button>
    <em id="9slfp"></em>
    <button id="9slfp"><acronym id="9slfp"><input id="9slfp"></input></acronym></button>
  • 免費開源的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;
    

    精品h动漫无遮挡在线看中文|久久精品国产精品亚洲艾草|久久亚洲春色中文字幕|精品人妻少妇一区二区三区|欧美精品v国产精品v

    <button id="9slfp"><object id="9slfp"></object></button>
    <button id="9slfp"><object id="9slfp"><menuitem id="9slfp"></menuitem></object></button>
    <em id="9slfp"></em>
    <button id="9slfp"><acronym id="9slfp"><input id="9slfp"></input></acronym></button>