AlamofireImage 占位符图像在缓存图像之前简要显示 v3.1
Posted
技术标签:
【中文标题】AlamofireImage 占位符图像在缓存图像之前简要显示 v3.1【英文标题】:AlamofireImage Placeholder image briefly shown before cached image v3.1 【发布时间】:2017-02-08 04:28:33 【问题描述】:我有一个显示图像列表的表格视图。我觉得我的 tableview 很简单,但是我无法让 af_setImage 正常工作。
当我向上和向下滚动表格时,我会再次看到 placeholderImage 一秒钟左右,然后才会出现正确的图像。
例如当表格视图第一次出现时,我可以在列表中看到三个图像。如果我滚动到表格底部并返回顶部,我会再次看到 placeholderImage 大约一秒钟。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseId, for: indexPath) as! MyCustomTableViewCell
let url = URL(string: self.dataReponseArray[indexPath.row].imageDownloadUrl)!
let placeholderImage = UIImage(named: "bike")!
cell.customCellImage.af_setImage(withURL: url, placeholderImage: placeholderImage)
return cell
有什么想法吗?
更新
我将 af_setImage 与 SDWebImage 中的 sd_setImage 交换,现在它按预期工作。
cell.customCellImage.af_setImage(withURL: url, placeholderImage: placeholderImage)
与
cell.customCellImage.sd_setImage(with: URL(string: "http://pathToMyIMage"), placeholderImage: UIImage(named: "placeholder.png"))
【问题讨论】:
每次向下滚动并再次向上滚动时,都会重新设置单元格。因此,图像被重新下载,然后呈现在该单元格上。所以它需要时间。首先下载所有图片,然后只使用设置图片属性 你可以查看这个库来加载图片github.com/Alamofire/AlamofireImage @iosDev 这是我正在使用的库。 @Rooney 我知道单元格被重复使用,但是根据 AlamofireImage 文档,af_setImage 将首先检查缓存以查看该图像是否先前已下载。如果它存在于缓存中,则不会显示 placeholderImage 并立即显示缓存的图像。 【参考方案1】:如果你不使用placeholderImage
会发生什么。
我有一个类似的项目。首先,我手动设置占位符图像。
cell.customCellImage.image = placeholderImage
然后
af_setImage(withURL: url)
默认图片(占位符图片)只显示一次。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseId, for: indexPath) as! MyCustomTableViewCell
let url = URL(string: self.dataReponseArray[indexPath.row].imageDownloadUrl)!
let placeholderImage = UIImage(named: "bike")!
cell.customCellImage.image = placeholderImage
cell.customCellImage.af_setImage(withURL: url)
return cell
【讨论】:
感谢您的帖子。不幸的是,这并没有奏效。它实际上产生了相同的结果。以上是关于AlamofireImage 占位符图像在缓存图像之前简要显示 v3.1的主要内容,如果未能解决你的问题,请参考以下文章
缓存的网络图像在调试模式下工作正常,但在发布模式下显示占位符抖动,请问有啥解决方案吗?