drawRect UIBezierPath性能问题

时间:2014-08-11 14:31:15

标签: ios objective-c

我正在使用绘图应用程序,用户可以选择工具,并在屏幕上移动手指形状,就像大多数此类应用程序一样。

所有图纸都发生在drawRect:子类中的UIView方法中:

for (UIBezierPath p in [self.paths copy]) {
        [p stroke];
}

当然我得到了上下文,我使用CGContextSaveGState并恢复,但大致这是它的工作原理。

每当用户将手指从屏幕上释放并且NSMutableArray被调用时,UIBezierPath就会添加setNeedsDisplay

[self.myView.paths addObject:bezierpath];
[self.myView setNeedsDisplay];

一切都运行良好但是如果用户继续绘图,有一段时间,数组包含很多UIBeazierPaths,并且在某些时候绘图过程开始工作越来越慢。

我知道drawRect:方法非常昂贵,但我无法找到更好的方法。

我的问题是如何改善表现?你知道其他任何方法可以提高效率吗?

目前我正在考虑计算包含bezier路径的最小矩形,一旦用户添加新项目,我可以拨打setNeedsDisplayInRect:而不是setNeedsDisplay,但我不知道这是一个很好的解决方案,任何想法都非常受欢迎?

提前致谢。

0 个答案:

没有答案