在drawrect中加速“CGContextDrawRadialGradient”的多种用途的最佳方法是什么?

时间:2011-03-08 04:40:13

标签: performance calayer gradient cglayer radial

我无法发布图像,但我使用“CGContextDrawRadialGradient”方法绘制阴影蓝色球(直径约40像素),它是阴影并在球周围形成“脉冲”白色环(内部和外部)环上的渐变)。环从蓝色球的边缘开始向外扩展(半径随着计时器而增长)。白色环随着它像无线电波一样向外扩展而消失。

在模拟器中看起来很棒,但在iPhone 4上运行得非常慢。响铃应该在大约一秒钟内(如在模拟器中)发出脉冲,但在手机上需要15-20秒。我一直在阅读关于CALayer,CGLayer的一些内容,并在一些渐变动画上阅读一些片段,但我不清楚我应该使用什么来获得最佳性能。

如何加快速度。我应该把球放在一层上,另一层上的扩展环吗?如果是这样,我怎么知道在drawrect上更新哪个图层?

感谢任何指导。感谢。

1 个答案:

答案 0 :(得分:1)

加速这样的速度的唯一方法是预渲染它。确定需要多少个图像帧才能使其看起来很好,然后将每个帧绘制到使用CGBitmapContextCreate创建的上下文中,并使用CGBitmapContextCreateImage捕获图像。设置动画图像的最简单方法可能是设置UIImageView的animationImages属性(尽管还有其他选项,如CALayer动画)。

最新的Apple文档最终提到iOS支持哪些像素格式,因此在创建位图上下文时请确保reference