绘图应用程序ios中的撤消和重做功能

时间:2016-03-12 11:24:10

标签: ios objective-c

我正在绘制一个绘图应用程序,我可以用手指触摸绘图。现在我正在尝试实现清除,撤消和重做功能。

在我的视图控制器中,我有两个用于“clearAll”和“Undo”的IBAction方法。我创建了一个名为drawing.h和.m的自定义类,其中我编写了用于处理触摸事件的函数。以下是我的功能。

问题是撤消和重做工作,但在撤消和重做中绘制的所有行中的最后一个颜色选择。

drowing in line view

after undo screensort

1 个答案:

答案 0 :(得分:1)

I Have Mistake In Touch End Method In Array Last Array Not Remove on last object 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
   UIGraphicsBeginImageContext(self.tempimage.bounds.size);
        [self.tempimage.layer renderInContext:UIGraphicsGetCurrentContext()];
  rawImage = UIGraphicsGetImageFromCurrentImageContext();
   [self.tempimage.image drawInRect:CGRectMake(0, 0, tempimage.frame.size.width, tempimage.frame.size.height) blendMode:blendmode alpha:opacity];
    UIGraphicsEndImageContext();
#if PUSHTOFILE
   lineIndex++;
    [self performSelectorInBackground:@selector(writeFilesBG)
                           withObject:nil];
#else
    NSDictionary *lineInfo = [NSDictionary dictionaryWithObjectsAndKeys:rawImage, @"IMAGE",nil];
    [pointsArray addObject:lineInfo];
    UIBezierPath *_path=[pointsArray lastObject];
    [_stack addObject:_path];
    [pointsArray removeLastObject];
    [self.tempimage setNeedsDisplay];
#endif
}