2012-09-06 42 views
-1

我很新的iOS编程,我有这个问题。iOS中的动画与大量高分辨率图像

我有一个观点,动画是火车冲过去的地方。动画的框架是60(1024x768)PNG,我把它放在一个数组中,然后使用[myUIImageView startAntimating]

这个作品非常漂亮,但我有另一个动画,我想稍后在相同的视图中运行,大约270 png的相同分辨率,其中火车停下来,门打开。以相同的方式将这些图像添加到UIImageView并不意外使应用程序崩溃。实际上,不添加第一组图像并仅添加这些图像会导致应用程序崩溃。

解决此问题的最佳方法是什么?

+0

嗨,我面临同样的问题..如果你已经解决了,你会请帮助...? –

+0

@Chitra我解决它的方式如下所述。 –

+0

谁可以downvoted这个请解释为什么 –

回答

1

抱着270个这样的PNG应该需要大约850MB的内存,所以你不能一次把它们全部放在一起。我能想到的三种方式来解决这个问题 -

  1. 没有一次加载所有的图像,而只是保持(说)10幅图像在内存中,丢弃已经显示的图像,并从磁盘加载新的。
  2. 使用专用的电影格式;这些格式具有帧间压缩,其中新帧仅保持其与前一帧之间的差异。这显然减少了内存使用量。看看libav's FAQ看看如何将一系列图像转换成电影。
  3. 减小图像的大小。如果你不在iPad上,或不需要视网膜分辨率,减少像素数量将大大减少内存需求。
+0

感谢这:)所以,如果我去选择一,我会创建一个前十个图像的数组,动画那一次,然后用相同的数组替换它,但与接下来的十个图像,并一次动画?你认为这会起作用吗?我会给它一个去,如果没有,我会尝试选项2.再次感谢。 –

+0

就是这样的;您可能想要保存两个阵列,一个正在显示,另一个正在从磁盘加载图像。每当显示结束时,交换数组。希望图像能够加载得足够快。就个人而言,我只是直接去展示一部电影。你为什么要处理个人图像? – user1071136

+0

因为这是我从我们的设计师发出的......他离开了两个星期。我想我可以尝试将这些图像拼接成一个视频。 –