繁体   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