1

我有一个 iOS 应用程序,我在其中处理各种大小的图像,这些图像包含在我从 Web 下载的链接中。不需要存储图像,因此我使用 EGOImageView,它是一个 UIImageView 扩展,可在后台缓存图像,这些图像位于 UITableView 中。所有这些都非常适合低于 1000x1000 像素左右的图像,但更大的图片是个问题。它们在后台下载得很好,但是只是将缓存的图像设置为 UIImageViews 图像需​​要花费大量时间来处理真正的大图像,以至于当有很多大图像时,它会使 Table View 的滚动变得非常不稳定。

那么我的问题是我该怎么做才能使简单地将这些图像加载到 UIImageView 中不会对主线程造成巨大负担?

4

1 回答 1

1

我最近不得不做一些工作,

我的解决方案很简单。

  1. 下载图像(AFNetworking)并将其存储在文档目录中
  2. 调整图像大小(核心图形)以在滚动时创建“缩略图”版本
  3. 当用户按下单元格查看图像时 - 显示更大的图像。

您可以使用 AFNetworking 将图像下载到磁盘,然后使用 Core Graphics 调整大小。我将我的包裹在一个 NSOperation 中并将它们添加到一个队列中,这样它就不会冻结任何 UI。

您看到延迟响应的原因是这些图像被保存在内存中,这对于较小的表来说很好,但它不可扩展。也可能是因为您的 fetch 是在主线程上完成的。

希望这使您朝着正确的方向前进。

https://github.com/AFNetworking/AFNetworking

CoreGraphics 图像调整大小

于 2013-10-23T22:09:20.813 回答