SDWebImage第三框架

一、SDWebImage架構(gòu)

  • SDWebImage架構(gòu)
  • SDWebImageManager
    • SDImageCache
    • SDWebImageDownloader
      • SDWebImageDownloaderOperation

** SDWebImage常見知識點(diǎn)**

  • 默認(rèn)緩存時(shí)間多少

    • 一周
  • 緩存的地址

 NSString *fullNamespace = [@"com.hackemist.SDWebImageCache." stringByAppendingString:ns];
  • cleanDisk如何清理過期圖片

    • 刪除早于過期日期的文件
    • 保存文件屬性以計(jì)算磁盤緩存占用空間
    • 如果剩余磁盤緩存空間超出最大限額,再次執(zhí)行清理操作,刪除最早的文件
  • clearDisk如何清理磁盤

    • 刪除緩存目錄
    • 新建緩存目錄
  • SDWebImage如何播放圖片

    • 取出gif中每一幀, 生成一張可動(dòng)畫圖片
  • SDWebImage如何判斷圖片類型

    • 判斷圖片二進(jìn)制前8個(gè)字節(jié)
    • kPNGSignatureBytes[8] = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A};

SDWebImage原理分析與常識

  • SDWebImage會自動(dòng)進(jìn)行內(nèi)存緩存和磁盤緩存
 - SDWebImage的磁盤緩存, 是按照時(shí)間來處理的, 只要緩存數(shù)據(jù)超過了最大的緩存時(shí)間, 就會自動(dòng)刪除
     - SDWebImage默認(rèn)的磁盤緩存時(shí)間是多久? 
        + 1周
     - SDWebImage接收到內(nèi)存警告會如何處理
        + 只要接收到內(nèi)存警告就會調(diào)用 clearMemory 清空內(nèi)存緩存
     - SDWebImage即將要被終結(jié)如何處理
        + 會調(diào)用 cleanDisk 方法, 刪除過期的文件
     - SDWebImage存儲到什么為止
        + caches文件夾下面
        + 新建一個(gè)default文件夾用于緩存
     - SDWebImage是如何清空緩存 ?
        + clearMemory
        + 移除NSCache中保存的所有圖片對象
     
     - SDWebImage是如何清除磁盤
        + cleanDisk : 清除過期的
            * 遍歷緩存目錄, 找到所有過期的文件, 并刪除
            * 查看當(dāng)maxCacheSize的值, 如果刪除之后緩存的大小, 還大于maxCacheSize, 那么就會從時(shí)間較早的開始繼續(xù)刪除, 直到緩存大小小于maxCacheSize為止
        + clearDisk : 清除所有
            * 直接干掉緩存文件夾
            * 重新創(chuàng)建一個(gè)新的文件夾, 作為緩存文件
     
     - SDWebImage可以直接播放GIF圖片
        + 加載GIF圖片, 然后取出GIF圖片中所有的幀, 并且計(jì)算動(dòng)畫時(shí)間
        + 根據(jù)取出的幀和動(dòng)畫時(shí)間生產(chǎn)一張新的可動(dòng)畫的圖片
     
     - SDWebImage它可以判斷圖片的類型
        + 圖片的十六進(jìn)制數(shù)據(jù), 的前8個(gè)字節(jié)都是一樣的, 所以可以同判斷十六進(jìn)制來判斷圖片的類型
        + PNG
        + JPG
        + ...

二、 基本使用

  • SDWebImage ->設(shè)置UIImageView圖片
    • 1、導(dǎo)入頭文件 #import "UIImageView+WebCache.h"
    • 2、sd_setImageWithURL:
 [cell.imageView sd_setImageWithURL:
 [NSURL URLWithString:app.icon]
  placeholderImage:[UIImage imageNamed:@"abc"]];
  • SDWebImage 直接下載一張圖片
/*
    第1個(gè)參數(shù): 需要下載圖片的URL
    第2個(gè)參數(shù): 下載的配置信息(例如是否需要緩存等等)
    第3個(gè)參數(shù): 下載過程中的回調(diào)
    第4個(gè)參數(shù): 下載完成后的回調(diào)
    
    */
   NSURL *url = [NSURL URLWithString:@"http://ia.topit.me/a/f9/0a/1101078939e960af9ao.jpg"];
   [[SDWebImageManager sharedManager] downloadImageWithURL:url options:kNilOptions progress:^(NSInteger receivedSize, NSInteger expectedSize) {
       // receivedSize : 已經(jīng)接受到的數(shù)據(jù)大小
       // expectedSize : 需要下載的圖片的總大小
       NSLog(@"正在下載 %zd %zd", receivedSize, expectedSize);
   } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
       // image : 下載好的圖片
       // error: 錯(cuò)誤信息
       // cacheType: 緩存的類型
       // finished: 是否下載完成
       // imageURL: 被下載的圖片的地址
       NSLog(@"下載成功 %@", image);
   }];
  • SDWebImage還有個(gè)按鈕分類,可以設(shè)置按鈕圖片
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容