[英]SDWebImage starts to load too late
在我的cellForRowAtIndexPath
,我在dequeResuableCell
內使用以下函數來更新單元格中的圖像
let imageNSURL = NSURL(string: post.imageUrl)
let placeHolderImage = UIImage(named: "LoadingPlaceHolder")!
postImageView.sd_setImageWithURL(imageNSURL, placeholderImage: placeHolderImage, options: [], progress: { (byteSent: Int, byteExpectedToSend: Int) in
// Progress
}, completed: { (image: UIImage!, error: NSError!, imageCacheType: SDImageCacheType, url: NSURL!) in
if error != nil {
print("Error \(error.localizedDescription)")
} else {
// Image Download Complete
}
})
但是,每次單元“即將出現”時,我都會看到placeHolder圖像的一瞥。 似乎SDWebImage
SDK僅在單元格實際出現在屏幕上時才開始下載圖像。 我想知道是否還有其他人正在經歷此問題或知道如何解決?
----更新----
回應評論
我認為cellForRowAtIndexPath在實際顯示的單元格之前被稱為(2,3個單元格?)。 willDisplayCell是在顯示單元之前顯示的那個。 但是我想我是錯誤的,因為您說的很合理。 我滾動的速度不是很快,文件只有55kb。 緩存圖像有效,但這僅在下載圖像之后。 我要實現的是,圖像可能會提前下載2,3個單元,以便在高速緩存中為要加載的單元做好准備。
您看到的可能是網絡延遲。
根據要加載的URL的緩存狀態, SDWebImage
可能會從遠程服務器下載圖像,並且取決於大小和網絡類型,這可能需要一些時間。
在單元格出隊之前,您不會嘗試加載圖像,這只會在顯示單元格之前發生。 您可能想要查看類似SDWebImagePrefetcher
。 這將允許您在應用程序生命周期的較早階段緩存圖像,並且(在大多數情況下)應確保圖像在本地可用,然后再顯示單元以消除網絡延遲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.