私は描画アプリで作業しており、指のタッチで描画できます。今、クリア、元に戻す、やり直し機能を実装しようとしています。ビューコントローラーには、「clearAll」と「元に戻す」の2つのIBActionメソッドがあります。 drawing.h および .m というカスタム クラスを作成しました。そこでは、タッチ イベントを処理するための関数を記述しました。以下は私の関数です。
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
tempArray = [[NSMutableArray alloc]init];
if ([touch tapCount] == 2)
{
self.image = nil;
}
return;
}
currentlocation.location = [touch locationInView:self];
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
PointLocation *currentLocation1 = [[PointLocation alloc] init];
currentLocation1.Location = [touch locationInView:self];
UIGraphicsBeginImageContext(self.frame.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[self.image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineWidth(ctx, 2.0);
CGContextSetRGBStrokeColor(ctx, 1.0, 0.0, 0.0, 1.0);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, currentlocation.Location.x, currentlocation.Location.y);
CGContextAddLineToPoint(ctx, currentLocation1.Location.x, currentLocation1.Location.y);
CGContextStrokePath(ctx);
CGContextSetFlatness(ctx, 0.1);
CGContextSetAllowsAntialiasing(ctx, true);
self.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
currentlocation = currentLocation1;
**[tempArray addObject:[NSArray arrayWithObjects:currentlocation,currentLocation1, nil]];
NSLog(@"%i",[tempArray count]);**
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
PointLocation *currentLocation1 = [[PointLocation alloc] init];
currentLocation1.Location = [touch locationInView:self];
UIGraphicsBeginImageContext(self.frame.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[self.image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineWidth(ctx, 2.0);
CGContextSetRGBStrokeColor(ctx, 1.0, 0.0, 0.0, 1.0);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, currentlocation.Location.x, currentlocation.Location.y);
CGContextAddLineToPoint(ctx, currentLocation1.Location.x, currentLocation1.Location.y);
CGContextStrokePath(ctx);
self.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
currentlocation = currentLocation1;
**[tempArray addObject:[NSArray arrayWithObjects:currentlocation,currentLocation1, nil]];
NSLog(@"%i",[tempArray count]);**
}
上記のコードでは、すべての CGPoints を配列に追加しています。配列はポイントで満たされています。元に戻す機能を実行するにはどうすればよいですか?
だから友達は私を助けてください..
よろしくランジット