Iphone fps问题

Iphone fps问题,iphone,Iphone,我已经创建了一个项目。 需要显示的图像有三组,每组5幅。 在应用程序中,图像将每0.2秒更改一次。 而且图像的大小只有30*30,所以屏幕上大约有80个图像,它们都有动画。 但是当我测试这个的时候,我感觉fps好像变成了0.8秒,非常慢 所有图像都在一个视图中绘制。我在方法-(void)drawRect中使用[image drawInRect:]。 那么,有什么建议可以让fps更快吗?您是否尝试过在屏幕上显示80UIImageViews?如果您仅在需要时在每个图像上设置新图像,您应该会看到改进

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

所有图像都在一个视图中绘制。我在方法-(void)drawRect中使用[image drawInRect:]。
那么,有什么建议可以让fps更快吗?

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

原因是每个
UIView
都有自己的
CALayer
,需要时会复制到图形内存中。在一个像素上进行复制非常慢(但一旦它在那里,它就会被缓存),因此,如果一次只更新一个30x30磁贴,您应该会看到比不断更新屏幕更好的性能

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


由于CALayers与图形内存的交互方式,任何时候重写
-(void)drawRect
都可能严重影响性能。iPhone的Quartz图形系统经过优化,可以拥有大量静态图层,然后可以通过图形命令(变换、不透明度等)进行操作。

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


迭代。一旦你做了一个调整,再次配置文件。情况好转了吗?如果是这样的话,那么寻找下一个加速的方法。如果没有,决定它是有用的还是应该恢复。

好吧,每次你画东西时。。。这是一部作品。。。如果图像太小,您就不会有内存问题……

不,我不使用UIImageView。我只是使用drawRect方法在UIView中绘制所有图像。没有任何其他UIView。而且总的图像不仅仅是80张。它可能远不止这个数字,80只是一个UIView中的最大数字。我知道你不知道,我建议你试试