Kingfisher源碼解析之Options解釋

Kingfisher源碼解析系列,由于水平有限,哪里有錯(cuò),肯請(qǐng)不吝賜教

  1. targetCache,originalCache
    • 類型ImageCache,Kingfisher中的緩存管理器,提供內(nèi)存和磁盤緩存
    • targetCache最終展示出來(lái)的緩存管理器
    • originalCache原始數(shù)據(jù)的緩存管理器
    • 默認(rèn)值都為nil,為nil時(shí),使用ImageCache(name: "default")
  2. downloader
    • 類型ImageDownloader,圖片下載器,提供圖片下載的功能
    • 默認(rèn)值為nil,為nil時(shí),使用ImageDownloader(name: "default")
  3. downloadPriority 下載優(yōu)先級(jí)
  4. transition
    • 類型ImageTransition,默認(rèn)是為ImageTransition.none
    • 為imageView顯示image的時(shí)候提供過(guò)渡動(dòng)畫
  5. forceTransition
    • 類型為Bool,默認(rèn)值false
    • 是否強(qiáng)制使用過(guò)渡動(dòng)畫,當(dāng)值為true時(shí),transition不為.none時(shí)就使用過(guò)渡動(dòng)畫,當(dāng)值為false時(shí),只有transition不為.none并且不使用緩存時(shí),才使用緩存動(dòng)畫
  6. forceRefresh 是否強(qiáng)制刷新,若值為true,則不使用緩存
  7. fromMemoryCacheOrRefresh 當(dāng)值為true時(shí),刷新的時(shí)候,若使用緩存,則只使用內(nèi)存緩存,不去磁盤緩存
  8. cacheMemoryOnly 是否只使用內(nèi)存緩存
  9. onlyFromCache 是否只從緩存中加載
  10. backgroundDecode 是否在子線程去解碼
  11. preloadAllAnimationData
    • 是否預(yù)加載GIF圖每一幀畫面,默認(rèn)值為false
    • 若使用UIImageView.setImage(),去加載圖片,則會(huì)被強(qiáng)制設(shè)置成true,因?yàn)?/li>
     @objc extension UIImageView {
        func shouldPreloadAllAnimation() -> Bool { return true }
     }
    
     public func setImage(
        with source: Source?,
        placeholder: Placeholder? = nil,
        options: KingfisherOptionsInfo? = nil ...
       -> DownloadTask? {
             ...
            //若shouldPreloadAllAnimation()的值為true
            //則把preloadAllAnimationData設(shè)為true
            //而ImageView中的shouldPreloadAllAnimation()一直為true
             if base.shouldPreloadAllAnimation() {
                options.preloadAllAnimationData = true
             }
            ...  
    } 
    
    
  12. onlyLoadFirstFrame 若圖片是GIF圖時(shí),是否只顯示第一幀
  13. callbackQueue,processingQueue
    • callbackQueue,圖片處理結(jié)束之后,回調(diào)所在的隊(duì)列,默認(rèn)值mainCurrentOrAsync
    • processingQueue,處理圖片時(shí)所在的隊(duì)列,比如利用processor給圖片添加圓角等操作時(shí),所在的隊(duì)列,默認(rèn)使用一個(gè)串行的子隊(duì)列
    • 一共有四個(gè)值可選擇.mainAsync,.mainCurrentOrAsync,.untouch,.dispatch(DispatchQueue)
    • .mainAsync主線程中異步執(zhí)行
    • .mainCurrentOrAsync,若當(dāng)前線程是主線程,則直接執(zhí)行,否則在主線程異步執(zhí)行
    • .untouch 不改變當(dāng)前所在的線程
    • .dispatch(DispatchQueue) 在指定的隊(duì)列中執(zhí)行
  14. requestModifier 發(fā)送請(qǐng)求時(shí)對(duì)原始的請(qǐng)求進(jìn)行修改,返回新的Request
  15. redirectHandler 當(dāng)請(qǐng)求發(fā)生重定向是,自定義的一些處理
  16. processor 加工者,自定義data|image轉(zhuǎn)成image的邏輯,
  17. imageModifier image修飾器,對(duì)image做一些修改,比如返回image.withRenderingMode(renderingMode)
  18. cacheSerializer 定義圖片序列化和反序列化
  19. keepCurrentImageWhileLoading 當(dāng)加載一個(gè)新圖時(shí),是否要保持當(dāng)前的圖片
  20. cacheOriginalImage 是否要緩存原始的數(shù)據(jù)
  21. onFailureImage 加載失敗時(shí),要展示的圖片
  22. alsoPrefetchToMemory 預(yù)加載時(shí),需要從磁盤加載時(shí),是否也需要同步到內(nèi)存中
  23. loadDiskFileSynchronously 從磁盤中加載時(shí),是否同步的去加載
  24. memoryCacheExpiration,diskCacheExpiration 設(shè)置內(nèi)存、磁盤緩存過(guò)期時(shí)間
  25. memoryCacheAccessExtendingExpiration
    • 當(dāng)從內(nèi)存、磁盤中取圖片時(shí),往后延長(zhǎng)過(guò)期時(shí)間的策略
    • 有以下幾個(gè)值:.none,.cacheTime,.expirationTime(_ expiration: StorageExpiration)
    • .none保持原來(lái)的過(guò)期時(shí)間
    • .cacheTime 設(shè)置過(guò)期時(shí)間為當(dāng)前時(shí)間加上原來(lái)的過(guò)期時(shí)間
    • .expirationTime(_ expiration: StorageExpiration) 設(shè)置過(guò)期時(shí)間到指定時(shí)間
  26. alternativeSources 當(dāng)加載失敗時(shí),可供替代的數(shù)據(jù)源
  27. onDataReceived 接收到數(shù)據(jù)時(shí),需要回調(diào)時(shí),可設(shè)置此屬性,比如setImage時(shí)設(shè)置的DownloadProgressBlock,就是在里面封裝了此屬性
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,656評(píng)論 1 32
  • 圖片下載的這些回調(diào)信息存儲(chǔ)在SDWebImageDownloader類的URLOperations屬性中,該屬性是...
    怎樣m閱讀 2,681評(píng)論 0 1
  • 1.自定義控件 a.繼承某個(gè)控件 b.重寫initWithFrame方法可以設(shè)置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,703評(píng)論 2 4
  • 現(xiàn)在分析到Y(jié)YImage 首先看文件 YYImage YYFrameImage YYSpriteSheetImag...
    充滿活力的早晨閱讀 2,721評(píng)論 0 3
  • 十句無(wú)題 寒冷隆冬總覺(jué)緩 夜長(zhǎng)夢(mèng)醒幾回還 崇崇心事輕輕涮 悠悠思緒云霧仙 來(lái)路崎嶇一如前 歸途起伏盼順安 君不問(wèn)過(guò)...
    舍得_之間閱讀 219評(píng)論 2 2

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