我正在基于手指移动在 View 上绘制多个 UIBezierPath
。
每次触摸循环(开始/移动/结束)完成时,我都会存储这些点并创建一个 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];
}
}
有没有一种方法可以使用子路径以不同的颜色或宽度绘制 UIBezierPath
?我的意思是,更改子路径的颜色、宽度和其他属性?这将允许我将一个 UIBezierPath
与几个不同的子路径一起使用。我希望可以绘制一个贝塞尔曲线并留在那里,而无需每次都重新绘制。我错过了什么?
最佳答案
确保您注意传递给 -drawRect: 的矩形。如果您的代码采取简单的方法并在每次调用 -drawRect: 时都重新绘制整个 View ,那么您可能至少在某些时候进行的绘制远远超过必要的绘制。
关于ios - 在 View 中绘制多个 UIBezierPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240409/