【发布时间】:2014-04-19 11:50:58
【问题描述】:
在视图的 drawRect 中渲染大量
我想实时绘制最多 512 个 2 像素宽的片段,但不确定如何以最高性能做到这一点。
将所有这些段创建和绘制为 BezierPath 或多个 bezierPath 不够快。
我读过 CGLayers 可以使用并渲染到目标 UIView 中。
从视图上下文设置图层并使用其自己的上下文写入其他地方的图层后,可以将图层绘制到视图中
CGContextDrawLayerAtPoint(context, point, layer);
如果图层中不断绘制某些内容,它应该何时使用 setNeedsDisplay 通知 UIView 并且它们可以保持同步?例如没有将 setNeedsDisplay 分派到主线程(这感觉不对)。
一旦进行了优化,在图层中渲染这么多路径/线的最佳方式是什么?
【问题讨论】:
-
贝塞尔路径是静态的吗?如果是,一种方法是在初始化时创建一次路径,然后 drawRect 在需要时使用它们而无需重新创建。标题现在让我忘记了,但是有一个 wwdc 2012 视频关于优化绘图、分析等。
标签: ios core-graphics cglayer