我的应用程序的一小部分包含一个视图,人们可以通过在屏幕上绘图来简要记录。目前,我通过将触摸点保存到数组然后连接drawRect中的点来实现此目的。我知道这不是最好的方法,但这只是我的应用程序的一小部分。
问题是,一段时间后,触摸点阵列变得非常大,性能陷入困境。
有人可以建议一个更好的方法来做这个而不是一个巨大的连接点游戏吗?我想在每个touchesEnded事件中,我应该以某种方式将触摸过程中绘制的内容提交给单独的绘图,然后清除阵列,但我不知道该怎么做?
答案 0 :(得分:0)
保留CGMutablePath
(或UIBezierPath
)属性并附加到该属性。构建大型路径非常昂贵,所以你绝对不应该在drawRect:
内部这样做。如果你必须经常构建路径,那么拥有一条比一条大路径更小的路径通常更便宜。
您也可以将每个新路径绘制为持久CGLayer
并在drawRect:
中绘制。这不太灵活,但具有固定的内存和处理要求。您可以通过更新contents
的{{1}}来实现类似的功能。