与其让drawRect
每次重绘数千个点,我认为有几种方法可以“在屏幕上缓存图像”和任何其他绘图,我们将添加到该图像,并在需要时显示该图像drawRect
:
使用 BitmapContext 绘制位图,然后在
drawRect
中绘制此位图。使用
CGLayer
并绘制CGLayer
indrawRect
,这可能比方法 1 更快,因为此图像缓存在显卡中(并且它不会计入 iOS 上“内存警告”的 RAM 使用量?)绘制到 a
CGImage
,并使用视图的图层:view.layer.contents = (id) cgimage;
所以好像有3种方法,我觉得CALayer
方法(3)中只能用aCGImage
来实现。 CALayer
本身不能缓存屏幕图像,不像CGLayer
(2)中那样。
方法(2)是三种方法中最快的吗,还有其他方法可以做到吗?我实际上计划制作一些屏幕图像的动画(循环超过 5 或 6 个),并将尝试使用CADisplayLink
60fps 的最高帧速率。方法(1)、(2)或(3)中的任何一种是否会使用显卡中的内存,因此不使用 RAM,因此也不太可能从 iOS 收到内存警告?