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