我正在编写一个使用手指绘制简单图表的应用程序。我让它大部分时间都在工作,但现在我正在尝试优化它的性能。当用户快速滑动手指时,我无法捕获足够的触摸事件来绘制平滑路径。
这是我目前的方法:
1)我子类化了一个 UIView 并向 CGLayer 添加了一个 poroperty(被懒惰地创建并且与我的 UIView 大小相同)。2) 我的 UIView 子类通过将当前和最后一个触摸点存储在实例变量中来响应触摸事件。3) 调用我的视图的 setNeedsDisplay 并在绘制矩形中执行以下操作: - 从上一个触摸位置到当前触摸位置到 CGLayer 绘制一条线 - 一次将整个 CGLayer 绘制到我的视图上下文中
主要问题是当用户快速滑动时,我得到的触摸事件相对较少,因此我在触摸之间绘制的线条很长,并且使路径看起来参差不齐。
我的问题:
1)drawRect(在我的 UIView 子类上)和我的 UIView 子类上的触摸事件处理程序是否在同一个线程中被调用?即我是否必须执行线程(一个在触摸事件中,第二个在我的绘制矩形中)?
如果不是 - 在调用 drawRect 时触摸事件是否排队?以及如何提高性能 - 只需提高 drawRect 的性能?
如果是 - 我怎样才能让更多的触摸事件发生,以便我可以绘制更平滑的路径?
谢谢。