我正在编写一个应用程序,使用手指绘制简单的图形。目前它基本能够工作,但我现在正在尝试优化其性能。当用户快速滑动手指时,我无法捕获足够的触摸事件来绘制平滑的路径。
以下是我的当前方法:
1)我创建了一个UIView的子类,并向其中添加了一个CGLayer属性(懒加载创建,大小与我的UIView相同)。 2)我的UIView子类通过将当前和上一个触摸点存储在实例变量中来响应触摸事件。 3)在drawRect中,执行以下操作: - 从上一个触摸位置到当前触摸位置绘制一条线到CGLayer - 将整个CGLayer一次性绘制到我的视图上下文中
主要问题是当用户快速滑动时,我只能获取相对较少的触摸事件,因此我在触摸之间绘制的线条很长,使路径看起来不平滑。
我的问题:
1)我的UIView子类的drawRect和触摸事件处理程序是否在同一线程中调用?也就是说,可能会有两个线程在执行(一个在触摸事件中,另一个在我的drawRect中)?
如果不是,请问在调用drawRect时是否会排队等待触摸事件?我该如何提高性能-只是改善drawRect的性能?
如果是,请问我如何获取更多的触摸事件,以便我可以绘制更平滑的路径?
谢谢。
以下是我的当前方法:
1)我创建了一个UIView的子类,并向其中添加了一个CGLayer属性(懒加载创建,大小与我的UIView相同)。 2)我的UIView子类通过将当前和上一个触摸点存储在实例变量中来响应触摸事件。 3)在drawRect中,执行以下操作: - 从上一个触摸位置到当前触摸位置绘制一条线到CGLayer - 将整个CGLayer一次性绘制到我的视图上下文中
主要问题是当用户快速滑动时,我只能获取相对较少的触摸事件,因此我在触摸之间绘制的线条很长,使路径看起来不平滑。
我的问题:
1)我的UIView子类的drawRect和触摸事件处理程序是否在同一线程中调用?也就是说,可能会有两个线程在执行(一个在触摸事件中,另一个在我的drawRect中)?
如果不是,请问在调用drawRect时是否会排队等待触摸事件?我该如何提高性能-只是改善drawRect的性能?
如果是,请问我如何获取更多的触摸事件,以便我可以绘制更平滑的路径?
谢谢。