我正在尝试在自定义视图上绘制多个 UIBezierPaths,并能够单独操作它们。
path 和存储路径的 NSMutableArray 是声明如下的实例变量:
@interface MyCustomView : UIView {
UIBezierPath *path;
NSMutableArray *paths; // this is initialized in the init method
}
路径在 touchesBegan 中初始化如下:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
path = [[UIBezierPath alloc] init];
[path moveToPoint:[touch locationInView:self];
}
它在 touchesMoved 方法中被移动如下:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[path addLineToPath:[touch locationInView:self]];
[self setsNeedsDisplay];
}
我想将它存储在 touchesEnded 的 NSMutableArray 中:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[path closePath];
[paths addObject:path];
[self setNeedsDisplay];
}
问题是,在我画了一个uibezierpath,然后开始画一个之后,我先画的那个消失了。我不确定为什么会这样。提前致谢!
注意:我知道一个可能的解决方案是将每个 uibezierpath 的所有点存储在 NSMutableArray 中,并在每次调用 drawRect 时重新绘制它,但我觉得这是一个低效的实现。