iOS中UIImageView的更快替代品

时间:2012-12-11 15:26:34

标签: ios ipad animation uiimageview core-animation

我有一个png图像列表,我希望它们一个接一个地显示以显示动画。在我的大多数情况下,我使用带有animationImages的UIImageView,它工作正常。但在一些情况下,我的pngs是1280 * 768(全屏iPad)动画,100多帧。我看到在仿真器上使用UIImageView非常慢(第一次加载太长时间)我相信如果我把它放在设备上它会更慢。

是否有任何替代方案可以非常顺利地显示图像序列?也许核心动画?我能看到任何可行的例子吗?

3 个答案:

答案 0 :(得分:4)

核心动画可以用于基于矢量/关键帧的动画 - 而不是图像序列。在iPad上加载超过一百个全屏PNG是一个真的坏主意,如果没有完全终止,你几乎肯定会收到内存警告。

您应该使用视频来显示这些动画。性能会好很多。是否有任何理由不能将H.264视频用于动画?

答案 1 :(得分:3)

制作图片视频。这是最简单也可能是最合理的方法。

如果您想要非常好的表现并完全控制动画,可以将图片转换为pvrtc4格式,并使用OpenGL将它们绘制为广告牌(纹理精灵)。如果您不知道该怎么做,这可能会有很多工作。

答案 2 :(得分:0)

看第二个例子

http://www.modejong.com/iPhone/

摘自http://www.modejong.com/iPhone/

还有UIImageView.animationImages API,但是当使用超过几个体面的图像时,它会迅速吸收所有系统内存。

我想要显示一个持续2秒的全屏幕动画,15 FPS,总共30张PNG图像,大小为480x320。此示例实现了一个面向动画的视图控制器,它只需等待读取帧的PNG图像数据,直到需要它为止。

这个类运行大约半兆内存,而第二代iPhone的CPU利用率约为5-10%,而不是分配多兆字节。此示例也已更新,包括在显示动画时可选择播放AVAudioPlayer音频文件的功能。