关于fps的问题

时间:2011-03-08 10:16:48

标签: iphone

我创建了一个项目。 并且需要显示三组图像,每组有5个图像。 在应用程序中,图像将每0.2秒更改一次。 并且图像的大小只有30 * 30,因此屏幕上大约有80个图像,它们都有动画。 但是当我测试这个时,我觉得fps似乎变成了0.8秒,非常慢。

所有图像均以ONE UIView绘制。我在方法 - (void)drawRect中使用[image drawInRect:]。 那么有什么建议让我更快地使用fps吗?

3 个答案:

答案 0 :(得分:0)

您是否尝试过将80 UIImageView放在屏幕上?如果您只在需要时在每个图像上设置新图像,您应该会看到改进。

原因是每个UIView都有自己的CALayer,在需要时会复制到图形内存中。复制像素是很慢的(但是一旦它被缓存了,所以如果你一次只更新一个30x30的图块,你会看到比不断更新屏幕更好的性能。

您当然可以在单个UIView中手动管理80个CALayers,但这比使用80 UIImageView要困难得多。

每次覆盖-(void)drawRect时,由于CALayers与图形内存交互的方式,您可能会损害性能。 iPhone的Quartz图形系统针对拥有大量静态图层进行了优化,然后可以使用图形命令(变换,不透明度等)进行操作。

答案 1 :(得分:0)

资料。使用Instruments应用程序找出代码的哪一部分运行速度最慢,然后查看是否可以加快速度或避免经常调用它。例如:你真的需要一直重新绘制所有图像吗?你能用Core Animation或OpenGL ES用相同的行为替换一些Cocoa Touch代码吗?

迭代。一旦你进行了调整,再次进行配置。它变好了吗?如果确实如此,那么寻找下一件加速的东西。如果没有,请确定它是否有用或应该还原。

答案 2 :(得分:0)

好吧,每次你画一些东西......这都是一项工作......你可能会在开始时加载你所有的图像然后只需在屏幕上交换它们(用hide / show你的UIImageView)就可以获得更好的表现,如果图像很小,你不会有记忆问题......