2
我剛開始使用KingFisher。使用Kingfisher,UITableView中的圖像加載不正確
當你向UITableView滾動的速度過快時,所有網絡/ doadload請求都會得到備份,所以按時間停止滾動,它仍然會完成那些先前的請求。
這會導致所有圖像閃爍不同的圖片,直到所有備份的請求都完成爲止。
這是我的代碼從緩存或網絡檢索圖像。
if ImageCache.defaultCache.cachedImageExistsforURL(finished_URL!) == true {
print("image is already cached.")
if cell.tag == indexPath.row{
cell.card_imageIV.image = UIImage(imageLiteral: "ic_error")
KingfisherManager.sharedManager.retrieveImageWithURL(finished_URL!, optionsInfo: nil, progressBlock: nil, completionHandler: { (image, error, cacheType, imageURL) ->() in
cell.card_imageIV.image = image
print("Retrieved cached image")
})
}
}else{
cell.card_imageIV.kf_setImageWithURL(finished_URL!, placeholderImage: self.placeholderImage, optionsInfo: nil, completionHandler: { image, error, cacheType, imageURL in
print("\(card_name): Finished")
})
}
我已經試過了取消所有以前的下載任務,使用但並沒有幫助下在https://github.com/onevcat/Kingfisher文檔。
下面的代碼我想:
// The image retrieving will stop.
imageView.kf_cancelDownloadTask()
這僅取消當前的細胞,至少從我可以做的意義。
嗨,感謝您的回答,我也有類似的競爭條件,取消didEndDisplaying我解決了這個問題。另外在Android流行的圖書館Glide使用類似的取消方法,唯一的缺點是如果它幾乎完全下載,它不會被緩存。你找到更好的解決方案嗎? – Minas
不,我沒有辦法緩存半下載(或95%下載,如果這是你想要的方式)圖像。我不確定翠鳥/任何其他緩存庫支持這樣的事情。 –
好吧,沒什麼大不了的,我使用你的解決方案,它工作得很好。非常感謝! – Minas