我正在开发一个应用程序,在某些时候用户需要在图像上绘制一些内容。
我编写的代码适用于1500x1500
及更小的图像,但是一旦图像变大,问题便会开始。
当图像太大时,绘图需要更多时间,并且很少会调用手势识别器。
我是这样做的:有两个类,一个是名为UIScrollView
的{{1}}子类,另一个是名为DrawView
的{{1}}子类。 UIImageView
有一个MyPen
,每当它被识别时就会向DrawView
发送消息(我得到UIPanGestureRecognizer
并依赖于它我开始或移动一行)。 MyPen
在其子视图中有两个UIImageView对象,一个用于背景图像,另一个用于图形(笔)。
这是我在MyPen中所做的事情:
[recognizer state]
当图像足够大时,CoreGraphics需要一些时间来渲染它,因此手势识别器不会经常被识别,并且向笔发送的点数较少。
这里的问题是:有没有办法优化绘图?我应该使用另一个线程吗?还有另一种方法吗? 非常感谢任何帮助。
答案 0 :(得分:1)
您应该将前景(线条)和背景(应该绘制线条的图像)分成两个视图。因此,每次用户移动手指时,您只能更新前景视图。当用户完成绘图时,您可以将两个视图组合成一个图像。
在CGContext中绘制图像非常昂贵,特别是在大的时候。