【发布时间】:2011-06-05 01:13:26
【问题描述】:
我正在基于手指移动的视图上绘制几个UIBezierPaths。
每次触摸循环——开始/移动/结束——完成时,我都会存储这些点并创建一个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 和几个不同的子路径。我希望可以绘制一个贝塞尔曲线并将其留在那里,而无需每次都重新绘制。我错过了什么?
【问题讨论】:
标签: ios objective-c cocoa-touch quartz-graphics uibezierpath