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
的内容。这将允许您在应用程序生命周期的早期阶段缓存图像,并且应该(在大多数情况下)确保图像在显示单元之前在本地可用,从而消除网络延迟。
在我的 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
的内容。这将允许您在应用程序生命周期的早期阶段缓存图像,并且应该(在大多数情况下)确保图像在显示单元之前在本地可用,从而消除网络延迟。