Kingfisher 使用

Kingfisher 非常類(lèi)似于OC中的SDWebImage, 是實(shí)現(xiàn)圖片加載和緩存的三方庫(kù)
常用的方法有:

imageView.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!)
imageView.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!, placeholderImage: nil)

通常來(lái)說(shuō),
Kingfisher將圖片資源下載到本地后,是以圖片資源的相對(duì)地址作為緩存圖片的Key,用戶(hù)再次調(diào)用鏈接下載圖片,Kingfisher首先會(huì)去查找本地是否有該圖片的緩存,根據(jù)的就是這個(gè)Key。
當(dāng)然,
Kingfisher 還給用戶(hù)提供了接口來(lái)指定 Key

let URL = NSURL(string: "http://your_image_url.png")!let resource = Resource(downloadURL: URL, cacheKey: "your_customized_key")
imageView.kf_setImageWithResource(resource)

在圖片加載完成后,我們有可能希望他會(huì)以動(dòng)畫(huà)的形式展現(xiàn)出來(lái),Kingfisher也是提供了接口的:

imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!, placeholderImage: nil, optionsInfo: [.Transition(ImageTransition.Fade(1))])

可以多研究下
optionsInfo 這個(gè)參數(shù),可以很方便的實(shí)現(xiàn)以下功能,記得參數(shù)是以數(shù)組的形式傳進(jìn)去的:

public enum KingfisherOptionsInfoItem {
    case TargetCache(ImageCache?)          //這里可以指定圖片的放在那個(gè)Cache里
    case Downloader(ImageDownloader?)          //使用哪個(gè)下載器
    case Transition(ImageTransition)          //加載完成后,以什么樣的方式展現(xiàn)出來(lái)(動(dòng)畫(huà))
    case DownloadPriority(Float)          //下載優(yōu)先級(jí)
    case ForceRefresh                         //是否強(qiáng)制刷新(忽略本地緩存)
    case ForceTransition               //強(qiáng)制動(dòng)畫(huà)
    case CacheMemoryOnly               //只查找內(nèi)存? 只在內(nèi)存緩存?
    case BackgroundDecode               //后臺(tái)解碼
    case CallbackDispatchQueue(dispatch_queue_t?)          //在哪個(gè)隊(duì)列下載
    case ScaleFactor(CGFloat)          //縮放比例 origin.size / scaleFactor = new.size,   即 >1 是縮小, (0, 1)是放大
    case PreloadAllGIFData               //預(yù)先加載Gif數(shù)據(jù)
}

如果加載的圖片比較大,可以加載的過(guò)程中顯示加載UI(Activity),只要一句代碼就可以:

testImageView.kf_showIndicatorWhenLoading = true
imageView.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!)

不過(guò)這里的Activity貌似不能自定義,里邊的方法是私有的的(private)
除了使用Activity顯示加載過(guò)程,也可以使用block回調(diào)實(shí)現(xiàn)加載進(jìn)度計(jì)算,自己自定義去顯示加載進(jìn)度

imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!, placeholderImage: nil, optionsInfo: nil, progressBlock: { (receivedSize, totalSize) -> () in
print("Download Progress: \(receivedSize)/\(totalSize)")
completionHandler: { (image, error, cacheType, imageURL) -> () in
    print("Downloaded and set!")
}

關(guān)于Gif的顯示

let imageView = AnimatedImageView()
imageView.kf_setImageWithURL(NSURL(string: "your_animated_gif_image_url")!)

預(yù)加載圖片

let urls = ["http://example.com/image1.jpg", "http://example.com/image2.jpg"].map { NSURL(string: $0)! }let prefetcher = ImagePrefetcher(urls: urls, optionsInfo: nil, progressBlock: nil, completionHandler: {    (skippedResources, failedResources, completedResources) -> () in    print("These resources are prefetched: \(completedResources)")})
prefetcher.start()
最后編輯于
?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,150評(píng)論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,420評(píng)論 4 61
  • 雙11,購(gòu)物狂們盼了許久的狂歡購(gòu)物節(jié)! 打開(kāi)電腦,屏幕上淘寶網(wǎng)、京東、唯品會(huì)、蘇寧、國(guó)美在線(xiàn)、當(dāng)當(dāng)網(wǎng)紅色的字體像花...
    柳葉瀟瀟閱讀 275評(píng)論 0 3
  • 姓名:顧秋艷日期:6月22日 六月份目標(biāo):推薦8個(gè)B 本月新入會(huì):一個(gè),恢復(fù)兩個(gè) 名單:五個(gè) 推薦:一個(gè) 學(xué)習(xí):今...
    237c27e82c85閱讀 216評(píng)論 0 0
  • 21天主題拆書(shū)訓(xùn)練營(yíng)·自我管理丨《習(xí)慣力》第三拆 ...
    草根雨田閱讀 203評(píng)論 0 0

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