iPhone:预览照片

时间:2009-08-12 21:02:26

标签: iphone cocoa-touch

我正在创建一个照片预览应用程序 - 它中有一些照片。当我没有大量的图像时,一切都很好。该应用程序使用UIScrollView在图像上切换,基于PageControl代码示例。

但是现在我添加了更多图片而且我遇到了一些麻烦 - 它消耗了太多内存而且我的应用程序开始收到应用程序警告,当我在图片之间切换时,它的工作太慢了。

有没有办法优化我的查看器以支持大量的图像文件?我希望实现与iPhone照片应用程序类似的功能 - 首先加载低详细图像,然后切换到中等细节,最后切换到高细节。这是怎么做到的?

提前谢谢。

2 个答案:

答案 0 :(得分:3)

如果最近才开始在您的应用程序中添加更多图像时出现内存问题,那么我会猜测您是否同时将所有图像加载到应用程序中(这会快速耗尽有限的内存)或者您的应用程序正在泄漏内存。

如果您同时加载所有图像,更有效的方法是仅加载当前图像,并且可能只显示在显示图像之前和之后显示的图像。如果这是您已采用的方法,请检查内存泄漏。

关于从低分辨率开始的图像,随着分辨率的增加逐渐变得更清晰;我不知道Apple为此做了什么,但它应该是一个相当容易的过程。创建图像的图块,在平移/缩放时,使用图块。当移动停止时,再次显示高分辨率图像。

iPhone上的照片应用程序采用这种方法的原因可能是双重的:首先,在平移和缩放低分辨率图像时,应用程序的性能会更好;您只需要在停止移动图像时看到高分辨率图像。其次,当应用程序执行较少的工作时(即,不断地平移/缩放低分辨率图像而不是高分辨率图像),设备上的电池将采用较小的命中功率。

答案 1 :(得分:0)

一种解决方案可能是确保只加载当前页面,下一页和上一页的图像。这样,如果你有大量的图像,你不会试图将它们全部保存在内存中。

就低细节到高细节效果而言,我不确定Apple是如何做到这一点的,但你可能会加载低细节然后在滚动视图中委托-scrollViewDidEndDeclerationg可能会启动一个加载高的短计时器如果此人长时间停留在图像上,则为分辨率图像。当滚动视图再次开始移动时,它可能会失效。