在我的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个单元格,以便在缓存中准备好加载单元格。
答案 0 :(得分:1)
您所看到的可能是网络延迟。
根据您加载的网址的缓存状态,SDWebImage
可能会从远程服务器下载图像,并且根据大小和网络类型,这可能需要一些时间。
您不会尝试加载图像,直到单元格出列,这只会在单元格显示之前发生。您可能希望查看SDWebImagePrefetcher
之类的内容。这将允许您在应用程序生命周期的早期阶段缓存图像,并且应该(在大多数情况下)确保图像在显示单元格之前在本地可用,从而消除网络延迟。