我想这个问题实际上与性能有关,但我也试图进行粗略的理智检查。
我显示了一个地图视图(虽然它是地图视图还是其他可以改变的东西,我希望它是无关紧要的),并且在地图视图的顶部我有一个透明的视图子类。在此视图的drawRect:
方法中,我使用核心图形调用在视图上绘制;圆形,渐变等。我所画的并不是非常复杂,但它并非无足轻重。然后,我有一个NSTimer
每X秒触发一次,每次调用[myview setNeedsDisplay]
,它绘制的内容每次都变化(圆圈变大,颜色和渐变变化等)。
这是进行此类基于矢量的动画的正确方法吗?我的性能非常低X似乎实际上并不比0.25好。我想要0.05或更小。还有其他办法吗?我觉得我要么战略性地离开,要么这是徒劳的。我可以用CoreAnimation做事 - 例如增长和缩小图片等等,而且速度非常快(为什么?),但它并没有给我我想要的控制权......
更多信息:降低绘图复杂度(更少的圆圈,渐变等等)确实可以显着加快绘图速度,但是我必须绘制几乎没有任何东西来获得平滑的动画效果。这种NSTimer策略是否是正确的方法?还有其他方法可以做动画矢量绘图吗?
答案 0 :(得分:0)
您是否有可能利用某些核心动画来执行部分/全部动画?例如,不是重新绘制尺寸变化的圆,而是将其渲染为一个尺寸并对其进行缩放变换动画?如果您只有几个动画对象,您可以尝试将每个对象添加为视图的子图层,然后将一些Core Animation动画批处理,而不是尝试手动重绘所有内容。如果你看看Apple的地图应用程序中的蓝色圆圈,当它们向外辐射时(在获得修复时),你可以看到它们开始锐利并且随着时间的推移变得有点模糊。它的工作原理很好,我怀疑他们只是缩放一个小的圆形图像。这种事情会对您的应用程序有效吗?
如果不更好地了解您正在执行的动画,很难说可以提高性能。那是你可以详细说明的吗?
(我会将此作为评论发布,但我只是羞于所需的声誉)