【问题标题】:UIWebImage+ AFNetworking images shifting in cellsUIWebImage+ AFNetworking 图像在单元格中移动
【发布时间】:2013-06-16 16:03:24
【问题描述】:

我有一个收藏视图。在 cellForRow 方法中,我在 collectionViewCell 中设置了一个对象。该对象的设置器获取对象的图像 url 并使用 AFNetworking 异步下载图像。 (setter 在自定义单元子类中)

但是,当我下载新图像并重新加载数据时,我必须向下滚动才能加载正确的图像...有时图像会更改单元格或重复(但我知道该单元格中的对象不会更改,因为对象标题是预期的。

发生了什么?

【问题讨论】:

  • 可能需要查看代码来回答这个问题。您是否在后台线程上操作 UI 元素?那可能是你的问题...
  • 这可能是因为图像是异步下载的,一旦下载完成,现在应该显示的图像视图必须显示另一个图像(因为您向上/向下滚动并且单元格正在重复使用)。因此,在尝试显示另一张图像时,它看起来并没有取消当前的图像下载。但这是猜测......

标签: ios objective-c


【解决方案1】:

如果您希望在不重新加载单元格(或向下滚动)的情况下换出图像,您需要调用:

[self.imageView setImageWithURL:<#some url#> placeholderImage:<#placeholder image same size as imageview#>];

AFNetworking 负责缓存图像,因此您可以在每次调用 cellForRow 时安全地调用相同的设置器(以避免图像在不同的单元格上重复使用)

注意:重要的是占位符图像与 imageView 的大小相同 - 您的图像将被换出。

【讨论】:

    【解决方案2】:

    我认为这可能主要是因为在 collectionview 中重用了单元格。尝试在dequeueReusableCellWithReuseIdentifier: 之后将自定义单元格的image 属性设置为nil

    【讨论】:

    • ...不是真的。 AFNetworking 的 UIImageView 类别会缓存图像本身,而您的 UIImageView 对象仍然存在 - 您只是将图像设置为 nil,而不是视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多