Я пытаюсь нарисовать несколько UIBezierPaths на пользовательском представлении, с возможностью управлять ими по отдельности.Сохранение UIBezierPaths в NSMutableArray
путь и 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];
}
И я хочу сохранить его в NSMutableArray в touchesEnded:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[path closePath];
[paths addObject:path];
[self setNeedsDisplay];
}
Проблема заключается в том, после того, как я рисую один uibezierpath, и начать рисовать один за что, один я обратил первых, исчезает. Я не знаю, почему это происходит. Заранее спасибо!
Примечание: Я знаю, что возможное решение хранит все точки каждого uibezierpath в NSMutableArray и перерисовывает его каждый раз, когда вызывается drawRect, но я чувствую, что это неэффективная реализация.
multi-touch нарушит эту реализацию. и нам нужно увидеть вашу функцию рисования –
Возможно, вы захотите увидеть [GLPaint] (http://developer.apple.com/library/ios/#samplecode/GLPaint/Introduction/Intro.html) –