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的主要内容,如果未能解决你的问题,请参考以下文章

缓存的网络图像在调试模式下工作正常,但在发布模式下显示占位符抖动,请问有啥解决方案吗?

AlamofireImage 缓存在我的应用程序中不起作用

AlamofireImage : 每次应用启动后缓存为空

在 Swift 中使用 AlamofireImage 将 GIF 图像转换为 UIImageView

使用 Almofireimage 下载然后缓存单元格图像

为啥我需要图像占位符服务或库?