ScrollView作为PhotoViewer,仅在需要时加载图像

时间:2011-03-24 20:28:54

标签: iphone xcode uiscrollview uiimageview

我想为iPhone创建一个PhotoViewer。

为此,我已经创建了一个启用了Paging的ScrollView,我在程序上添加了UIImageViews。我看到的问题是,如果我想要100个图像,并且我将添加到ScrollView,它将需要很多性能和内存。

你怎么能让它更高效?我考虑过加载以下2页的图像,并在滚动页面之前释放2张图像之后的图像。

我考虑过创建UIScrollView的子类并将其命名为UIPhotoScroller(或类似的东西)。但我也想在MainWindow中显示有关图像信息的UIView。是否可以从子类中看到UIView?

你真的会帮助我。提前谢谢你:D

3 个答案:

答案 0 :(得分:1)

  1. 创建NSCache。
  2. 当您需要特定图像时,请尝试从缓存中获取该图像。如果不存在,请从磁盘加载并将其保存在缓存中。文件名是合适的密钥。
  3. 当你收到内存警告时,告诉缓存自己清空。
  4. 缓存将定期释放部分条目,具体取决于其配置方式。这是一件好事,但您可能希望将其调整为具有特定的总内存大小。调整其参数,直到它表现得像你想要的那样。要查看您的内存使用情况,请使用Instruments。

答案 1 :(得分:0)

如何使用每个单元格的单张照片执行UITableView。当数据源请求单元格时,显示一个微调器并排队NSOperation加载图像并在完成后刷新该行。
您可以使用NSQueue控制并发操作的数量,因此您可以完全控制性能/响应性。然后,当内存/分页等较低时,您可以删除旧的缓存图像。

如果您需要水平滚动,有horizontal UITableView的解决方案。

答案 2 :(得分:0)

你看过three20 library了吗?有一个例子可以创建一个很棒的照片应用程序类似的照片查看器,并且使用three20库非常容易。

希望这有帮助!