在视图中绘制许多UIBezierPath

Spa*_*Dog 6 cocoa-touch objective-c quartz-graphics ios uibezierpath

UIBezierPath根据手指动作在视图上绘制了几个s.

每次触摸循环 - 开始/移动/结束 - 完成后,我存储点并创建一个UIBezierPath存储在一个名为的数组中bezierArray.我有另一个调用的数组bezierArrayColors存储每个路径的颜色.

问题是这个.该课程使用drawRect.据我所知,每次drawRect运行时,都必须绘制所有创建的路径,现在应用程序速度很慢.

这是我的drawRect现在.我知道这很蹩脚,但我不知道如何做到这一点.

- (void)drawRect:(CGRect)rect {
   for (int i=0; i<[self.bezierArray count]; i++) {
        UIBezierPath *aPath = (UIBezierPath*)[self.bezierArray objectAtIndex:i];
        UIColor *aColor = (UIColor*)[self.bezierArrayColor objectAtIndex:i];
    [aPath setLineWidth:LINE_WIDTH];

    [aColor setStroke];
    [aPath stroke];
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法UIBezierPath使用子路径划分不同颜色或宽度?我的意思是,改变子路径的颜色,宽度和其他属性?这将允许我使用UIBezierPath具有几个不同子路径的一个.我希望有一个bezier可以被绘制并留在那里而不需要每次都重绘.我错过了什么?

Cal*_*leb 6

确保你注意传入-drawRect:的矩形.如果您的代码在每次调用-drawRect:时都采用简单的方法并重新绘制整个视图,那么至少在某些时候,您可能会进行远远超过必要的绘制.