使用CGContextDrawImage绘制冗余图像

时间:2011-12-23 07:38:16

标签: iphone objective-c cgcontext

我有一个图像,我希望在屏幕上重复重绘,但是,每秒有大量的重绘,每次绘制图像会使应用程序受到巨大的性能影响。有没有办法以某种方式缓存CGImageRef或使CGContextDrawImage执行得更快的东西?

2 个答案:

答案 0 :(得分:1)

尝试使用UIImageViews并查看它是否足够快。您可以拥有许多UIImageViews。您应该将所有图像属性设置为UIImage的同一个实例。

如果是游戏,你应该只使用游戏引擎(Unity,Cocos2D等)。他们已经花了很多时间来弄清楚如何快速制作这些东西。

答案 1 :(得分:1)

CGLayerRef应该是你需要的。

来自Apple文档:

  

图层适用于以下内容:

     

您计划重复使用的高质量的绘图外渲染。

     
      
  • 例如,您可能正在构建场景并计划重复使用相同的背景。将背景场景绘制到图层,然后在需要时绘制图层。一个额外的好处是您不需要知道颜色空间或依赖于设备的信息来绘制图层。
  •   
  • 重复绘图。例如,您可能希望创建一个由反复绘制的相同项组成的模式。将项目绘制到图层,然后重复绘制图层,如图12-1所示。您重复绘制的任何Quartz对象(包括CGPath,CGShading和CGPDFPage对象)都可以从将其绘制到CGLayer中时提高性能。请注意,图层不仅适​​用于屏幕绘图;您可以将它用于非面向屏幕的图形上下文,例如PDF图形上下文。
  •   

https://developer.apple.com/library/mac/#documentation/graphicsimaging/Conceptual/drawingwithquartz2d/dq_layers/dq_layers.html#//apple_ref/doc/uid/TP30001066-CH219-TPXREF101