Kingfisher源碼解析之Options解釋

Kingfisher源碼解析系列,因爲水平有限,哪裏有錯,肯請不吝賜教緩存

  1. targetCache,originalCache
    • 類型ImageCache,Kingfisher中的緩存管理器,提供內存和磁盤緩存
    • targetCache最終展現出來的緩存管理器
    • originalCache原始數據的緩存管理器
    • 默認值都爲nil,爲nil時,使用ImageCache(name: "default")
  2. downloader
    • 類型ImageDownloader,圖片下載器,提供圖片下載的功能
    • 默認值爲nil,爲nil時,使用ImageDownloader(name: "default")
  3. downloadPriority 下載優先級
  4. transition
    • 類型ImageTransition,默認是爲ImageTransition.none
    • 爲imageView顯示image的時候提供過渡動畫
  5. forceTransition
    • 類型爲Bool,默認值false
    • 是否強制使用過渡動畫,當值爲true時,transition不爲.none時就使用過渡動畫,當值爲false時,只有transition不爲.none而且不使用緩存時,才使用緩存動畫
  6. forceRefresh 是否強制刷新,若值爲true,則不使用緩存
  7. fromMemoryCacheOrRefresh 當值爲true時,刷新的時候,若使用緩存,則只使用內存緩存,不去磁盤緩存
  8. cacheMemoryOnly 是否只使用內存緩存
  9. waitForCache 是否等待緩存完成,再調用回調
  10. onlyFromCache 是否只從緩存中加載
  11. backgroundDecode 是否在子線程去解碼
  12. preloadAllAnimationData
    • 是否預加載GIF圖每一幀畫面,默認值爲false
    • 若使用UIImageView.setImage(),去加載圖片,則會被強制設置成true,由於
    @objc extension UIImageView {
        func shouldPreloadAllAnimation() -> Bool { return true }
     }
    
     public func setImage(
        with source: Source?,
        placeholder: Placeholder? = nil,
        options: KingfisherOptionsInfo? = nil ...
       -> DownloadTask? {
             ...
            //若shouldPreloadAllAnimation()的值爲true
            //則把preloadAllAnimationData設爲true
            //而ImageView中的shouldPreloadAllAnimation()一直爲true
             if base.shouldPreloadAllAnimation() {
                options.preloadAllAnimationData = true
             }
            ...  
    } 
    
    複製代碼
  13. onlyLoadFirstFrame 若圖片是GIF圖時,是否只顯示第一幀
  14. callbackQueue,processingQueue
    • callbackQueue,圖片處理結束以後,回調所在的隊列,默認值mainCurrentOrAsync
    • processingQueue,處理圖片時所在的隊列,好比利用processor給圖片添加圓角等操做時,所在的隊列,默認使用一個串行的子隊列
    • 一共有四個值可選擇.mainAsync,.mainCurrentOrAsync,.untouch,.dispatch(DispatchQueue)
    • .mainAsync主線程中異步執行
    • .mainCurrentOrAsync,若當前線程是主線程,則直接執行,不然在主線程異步執行
    • .untouch 不改變當前所在的線程
    • .dispatch(DispatchQueue) 在指定的隊列中執行
  15. requestModifier 發送請求時對原始的請求進行修改,返回新的Request
  16. redirectHandler 當請求發生重定向是,自定義的一些處理
  17. processor 加工者,自定義data|image轉成image的邏輯,
  18. imageModifier image修飾器,對image作一些修改,好比返回image.withRenderingMode(renderingMode)
  19. cacheSerializer 定義圖片序列化和反序列化
  20. keepCurrentImageWhileLoading 當加載一個新圖時,是否要保持當前的圖片
  21. cacheOriginalImage 是否要緩存原始的數據
  22. onFailureImage 加載失敗時,要展現的圖片
  23. alsoPrefetchToMemory 預加載時,須要從磁盤加載時,是否也須要同步到內存中
  24. loadDiskFileSynchronously 從磁盤中加載時,是否同步的去加載
  25. memoryCacheExpiration,diskCacheExpiration 設置內存、磁盤緩存過時時間
  26. memoryCacheAccessExtendingExpiration
    • 當從內存、磁盤中取圖片時,日後延長過時時間的策略
    • 有如下幾個值:.none,.cacheTime,.expirationTime(_ expiration: StorageExpiration)
    • .none保持原來的過時時間
    • .cacheTime 設置過時時間爲當前時間加上原來的過時時間
    • .expirationTime(_ expiration: StorageExpiration) 設置過時時間到指定時間
  27. alternativeSources 當加載失敗時,可供替代的數據源
  28. onDataReceived 接收到數據時,須要回調時,可設置此屬性,好比setImage時設置的DownloadProgressBlock,就是在裏面封裝了此屬性
相關文章
相關標籤/搜索