2

私は描画アプリで作業しており、指のタッチで描画できます。今、クリア、元に戻す、やり直し機能を実装しようとしています。ビューコントローラーには、「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 を配列に追加しています。配列はポイントで満たされています。元に戻す機能を実行するにはどうすればよいですか?

だから友達は私を助けてください..

よろしくランジット

4

0 に答える 0