【问题标题】:Best way to speed up multiple uses of "CGContextDrawRadialGradient" in drawrect?在drawrect中加速“CGContextDrawRadialGradient”多次使用的最佳方法?
【发布时间】:2011-03-08 04:40:13
【问题描述】:

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

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

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

感谢任何指导。谢谢。

【问题讨论】:

    标签: performance calayer gradient cglayer radial


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 2021-03-01
      相关资源
      最近更新 更多