【问题标题】:How to optimize flipping through 50+ images, which are downloaded如何优化翻阅 50 多张已下载的图片
【发布时间】:2023-06-10 16:42:01
【问题描述】:

我有一个包含大约 50 多个全屏图像 (png) 的 iPad 应用程序,我希望能够在图像之间来回翻转。为了使应用程序更小,我正在使用 NSURLConnection 下载我需要的图像。我还缓存了大约 15 张图像。我遇到的问题是,即使我有缓存,也很容易翻阅缓存并找到尚未下载的图像。

我想知道你有什么建议来解决我的问题。我应该只增加缓存还是应该降低图像?我是否必须限制同时下载的图像数量?非常感谢!

这就是我开始每个图像下载的方式

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:[NSURLRequest 
            requestWithURL:[NSURL URLWithString:theUrlString]] 
            delegate:self startImmediately:NO];

[conn scheduleInRunLoop:[NSRunLoop mainRunLoop]
            forMode:NSRunLoopCommonModes];

[conn start];

【问题讨论】:

  • 在开始图片展示之前你知道一共有多少张图片吗? (您可以简单地在每个插槽中显示一个占位符图像,直到 NSURLConnection 提供必要的。)也就是说,在下载图像时将图像缓存在您的应用程序文档目录中不会引起任何我认为的问题. (考虑到所有因素,数据并不是那么多。)

标签: objective-c ipad ios optimization nsurlconnection


【解决方案1】:

关于在照片下载后翻阅照片,这里有一些提示可以尝试。

  • 同时提供低分辨率和高分辨率版本的照片。
  • 每当您加载了一张图片时,将其直接邻居的高分辨率版本带入内存。换句话说,加载但不显示这些图片。
  • 将低分辨率图像加载到显示图片周围某个范围的内存中。因此,如果显示图片 5,并且您的范围为 5,则加载低分辨率图片 0 到 10
  • 当用户翻阅时,先渲染低分辨率,然后加载高分辨率图片。

这些提示应该考虑到用户翻阅几张图片以找到所需的照片,然后在选择的图片上暂停,然后再翻阅一些。

【讨论】:

  • amccormack 感谢您的建议。