SDWebImage开始加载太晚了

时间:2016-09-22 10:53:30

标签: ios swift sdwebimage

在我的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个单元格,以便在缓存中准备好加载单元格。

1 个答案:

答案 0 :(得分:1)

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

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

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