簡體   English   中英

SDWebImage開始加載為時已晚

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM