Iphone 核心动画和视图旋转的性能不佳:如何改进?
我有12个视图,在进入主屏幕自定义模式时,我通过触摸图标几秒钟来旋转它们,几乎与主屏幕中的图标相似 我使用3D转换代码进行旋转。它们各自的持续时间仅为0.02秒,在加速度测量时,旋转角度和方向会永久改变 其中5个视图可以,但12个视图的性能非常差。这是轮换代码:Iphone 核心动画和视图旋转的性能不佳:如何改进?,iphone,cocoa-touch,uikit,core-animation,transform,Iphone,Cocoa Touch,Uikit,Core Animation,Transform,我有12个视图,在进入主屏幕自定义模式时,我通过触摸图标几秒钟来旋转它们,几乎与主屏幕中的图标相似 我使用3D转换代码进行旋转。它们各自的持续时间仅为0.02秒,在加速度测量时,旋转角度和方向会永久改变 其中5个视图可以,但12个视图的性能非常差。这是轮换代码: CATransform3D rotatedTransform = CATransform3DRotate(CATransform3DIdentity, degrees * M_PI / 180.0, 0.0f, 0.0f, 1.0f);
CATransform3D rotatedTransform = CATransform3DRotate(CATransform3DIdentity, degrees * M_PI / 180.0, 0.0f, 0.0f, 1.0f);
self.layer.transform = rotatedTransform;
有一些核心动画围绕着它。但我看到了CPU的浪费,因为我不做任何3D的东西。我真的只旋转2D,其他什么都没有。它们是简单的UIImageViews,但是一个自定义类,可以自己执行旋转动画
我听说有一些“仿射”变换应该适用于二维空间。在这种情况下,您是否建议将其更改为2D
我必须更改图层或视图的变换吗?哪个更快 我的建议是使用OpenGLES。
尽管核心动画比“UITransformations”更为快速,但您面临的问题是一个经典问题:您正试图创建基于帧到帧的动作,其中有大量“虚拟”精灵漂浮在周围。这不是UIKit的用途。尤其是你想要做的动画。旋转需要三角学来计算像素插值。那是一个相当昂贵的程序 除非对动画的强度、同时动画对象的数量以及重新计算新变换的频率有明确的限制,此时我给您的唯一建议是OpenGL ES 到目前为止,我对iPhone的体验非常相似。每次我们启动应用程序时,当前的平台都无法处理它。我们最终使用了OpenGL ES,值得学习性能令人难以置信 我为“坏消息”感到抱歉,但我强烈建议不要在基于帧到帧的应用程序中使用UIKit和核心动画我的建议是使用OpenGL ES。
尽管核心动画比“UITransformations”更为快速,但您面临的问题是一个经典问题:您正试图创建基于帧到帧的动作,其中有大量“虚拟”精灵漂浮在周围。这不是UIKit的用途。尤其是你想要做的动画。旋转需要三角学来计算像素插值。那是一个相当昂贵的程序 除非对动画的强度、同时动画对象的数量以及重新计算新变换的频率有明确的限制,此时我给您的唯一建议是OpenGL ES 到目前为止,我对iPhone的体验非常相似。每次我们启动应用程序时,当前的平台都无法处理它。我们最终使用了OpenGL ES,值得学习性能令人难以置信
我为“坏消息”感到抱歉,但我强烈建议不要在基于帧到帧的应用程序中使用UIKit和核心动画听起来像是您不断地重新绘制视图。我确信有一种方法可以禁用此功能,并且只在动画结束时重新绘制。听起来像是您不断地重新绘制视图。我相信有一种方法可以禁用此功能,并且只在动画结束时重新绘制
子层变换
,而不是单独变换每个图像子层变换
,而不是单独变换每个图像图像在屏幕上有多大?CALayer旋转是硬件加速的,2D和3D转换非常相似,没有重画,不需要转到opengl,不需要缓存 Shark会有所帮助,但您需要知道您在寻找什么,并且您所寻找的不是改进当前代码的性能,而是