iOS最快的方式来绘制许多矩形

时间:2013-07-01 16:32:11

标签: ios objective-c drawrect

我想在iPad上显示由许多小的绿色,红色或黑色矩形组成的音频表。它们不需要花哨,但可能有很多。我正在寻找最好的技术来快速绘制它们。以下哪种技术更好:CALayers中的文本地图集或OpenGLES或其他技术?

感谢您在问题因为过于宽泛而被关闭之前得到答案。不幸的是,我无法解决问题,因为我不知道使用哪种技术。如果我知道答案,我可以把问题变得非常狭窄。

4 个答案:

答案 0 :(得分:4)

最快的绘图是在自定义视图中使用OpenGLES。

答案 1 :(得分:4)

另一种方法是在CALayers中使用纹理图集。你可以将9组你的盒子绘制成一个图像以开始(0-8个盒子),然后在屏幕上创建300个CALayers,全部使用它作为它们的内容。在每个帧中,您将每个图层切换到指向需要使用的纹理图集的部分。我以前从未用过300层做过这个,所以我不知道这是否会成为一个问题 - 我只用六打左右的数字来完成每一帧的更新,但这确实很有用 好吧。有关详细信息,请参阅此博客文章:

http://supermegaultragroovy.com/2012/11/19/pragma-mark-calayer-texture-atlases/

答案 2 :(得分:2)

重复绘制内容的最佳方法是避免在屏幕上已经绘制它。由于音频表往往频繁更新,但其大部分区域保持不变,因为音频信号相对平滑,您应该跟踪绘制的内容,并仅绘制差异。

例如,如果您在之前的更新中绘制了一个具有五十个绿色方块的信号表,现在您需要绘制四十八个绿色方块,则应该仅重绘与前一个更新不同的两个方格。这样可以节省大量的石英电话。

答案 3 :(得分:1)

将渲染推迟到绝对必要的地步,i。即假设您正在使用CoreGraphics进行绘制,请使用路径,并且只有在将所有矩形添加到路径时才会描边/填充路径。