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
            }
    })

但是,每次单元格为 "just about to appear" 时,我都会瞥见占位符图像。似乎 SDWebImage SDK 仅在接近单元格实际出现在屏幕上时才开始下载图像。我想知道是否还有其他人遇到过这种情况或知道如何解决?

----更新----

回复评论

我认为 cellForRowAtIndexPath 在实际显示单元格之前被调用(2,3 个单元格?)。 willDisplayCell 是在显示单元格之前显示的那个。但我想我错了,因为你说的很有道理。我滚动的速度不是很快,文件只有 55kb。缓存图像有效,但只有在图像下载后才有效。我想要实现的是图像可能提前 2,3 个单元格下载,以便它在缓存中准备好加载单元格。

您看到的可能是网络延迟。

根据您正在加载的 url 的缓存状态,SDWebImage 可能会从远程服务器下载图像,并且根据大小和网络类型,这可能需要一些时间.

在单元格出列之前,您不会尝试加载图像,这只会在单元格显示之前发生。您可能想查看类似 SDWebImagePrefetcher 的内容。这将允许您在应用程序生命周期的早期阶段缓存图像,并且应该(在大多数情况下)确保图像在显示单元之前在本地可用,从而消除网络延迟。