在 UITableView 重新加载时从 SDWebImage 设置图像
Setting Image from SDWebImage on UITableView Reload
我有一个 UITableView 中的单元格列表。正在单元格内通过以下方法下载图像
self.profileImage.sd_setImage(with: URL(string: profileURL), completed: { (image, error, cache, url) in
if image != nil {
self.profileImage.image = image
} else {
print("didn't load image")
}
})
但是,在重新加载和重新加载 UITableView 时,该索引的先前图像会加载一小会儿,然后会出现该索引的更新图像。
现在我的理论是发生以下情况(如果我错了请纠正我)...
- 检索到 URL 后立即下载图像。
- 该图像使用 SDWebImage 缓存。
- TableView 重新加载,单元格中的数据发生变化。
- SDWebImage 使用该 indexPath 的缓存图像而不是单元格。 (这里有问题)
- SDWebImage 再次为该单元格下载 URL 并刷新图像。
如果这是正确的,我需要执行以下操作...
- 检索到 URL 后立即下载图像。
- 使用 SDWebImage 缓存图像。
- TableView 重新加载,单元格中的数据发生变化。
- 使用该单元格的缓存图像。
我是否使用了错误的方法来设置 self.profileImage?
一如既往,我们非常感谢您的帮助。
1.Download 检索到 URL 图像。
2.Cache带SDWebImage的图片。
您使用此代码
let url = NSURL(string: "https://test.com/upload/image.jpg")!
self.imageD.sd_setImage(with: url as URL!, placeholderImage: UIImage(named: "default_logo"), options: .transformAnimatedImage, progress: nil, completed: nil)
这个default_logo放在里面Assets.xcassets
3.TableView 重新加载,单元格中的数据发生变化。
self.tableView.reloadData()
如果您使用 UITableViewCell 配置您的单元格,那么您可以覆盖方法 prepareForReuse() 以清除旧图像,例如:
override func prepareForReuse() {
super.prepareForReuse()
profileImage.image = nil
}
这样旧的缓存图片就不会出现了。
我有一个 UITableView 中的单元格列表。正在单元格内通过以下方法下载图像
self.profileImage.sd_setImage(with: URL(string: profileURL), completed: { (image, error, cache, url) in
if image != nil {
self.profileImage.image = image
} else {
print("didn't load image")
}
})
但是,在重新加载和重新加载 UITableView 时,该索引的先前图像会加载一小会儿,然后会出现该索引的更新图像。
现在我的理论是发生以下情况(如果我错了请纠正我)...
- 检索到 URL 后立即下载图像。
- 该图像使用 SDWebImage 缓存。
- TableView 重新加载,单元格中的数据发生变化。
- SDWebImage 使用该 indexPath 的缓存图像而不是单元格。 (这里有问题)
- SDWebImage 再次为该单元格下载 URL 并刷新图像。
如果这是正确的,我需要执行以下操作...
- 检索到 URL 后立即下载图像。
- 使用 SDWebImage 缓存图像。
- TableView 重新加载,单元格中的数据发生变化。
- 使用该单元格的缓存图像。
我是否使用了错误的方法来设置 self.profileImage?
一如既往,我们非常感谢您的帮助。
1.Download 检索到 URL 图像。 2.Cache带SDWebImage的图片。
您使用此代码
let url = NSURL(string: "https://test.com/upload/image.jpg")!
self.imageD.sd_setImage(with: url as URL!, placeholderImage: UIImage(named: "default_logo"), options: .transformAnimatedImage, progress: nil, completed: nil)
这个default_logo放在里面Assets.xcassets
3.TableView 重新加载,单元格中的数据发生变化。
self.tableView.reloadData()
如果您使用 UITableViewCell 配置您的单元格,那么您可以覆盖方法 prepareForReuse() 以清除旧图像,例如:
override func prepareForReuse() {
super.prepareForReuse()
profileImage.image = nil
}
这样旧的缓存图片就不会出现了。