【问题标题】:Undo and Redo functionality in drawing application ios绘图应用程序 ios 中的撤消和重做功能
【发布时间】:2016-03-12 11:24:10
【问题描述】:

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

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

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

【问题讨论】:

  • 所以您可以撤消以删除线条,但您还希望能够撤消对绘图颜色的更改?
  • 我有五行和不同颜色最后一行出现红色然后我点击撤消然后所有四行都是红色
  • 所以你只存储行历史和当前颜色?不是线条和相关颜色?您需要展示一些代码和数据模型的详细信息。
  • 不,我有一个创建四行第一红色第二绿色第三蓝色第四黑色然后单击撤消然后列出第四行删除剩下的三行是因为它的颜色和线条没有变化,但我的问题在我点击撤消然后删除最后一行剩下三行是黑色
  • 请尽快回复我。

标签: ios objective-c


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2013-01-27
    • 2015-03-30
    • 2018-09-09
    • 2013-01-26
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多