Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在绘画应用程序中实现撤消操作_Iphone - Fatal编程技术网

Iphone 如何在绘画应用程序中实现撤消操作

Iphone 如何在绘画应用程序中实现撤消操作,iphone,Iphone,我正在做一个绘画应用程序。在这里,我画了一些图像。但我想添加撤消操作以删除以前绘制的项目。如何实现撤消操作?以下是操作步骤。请参阅此链接: 一般来说,您需要实现一个命令模式(或类似的模式)。 如果可以反转一个操作(例如,在图形程序中,放大一个圆),则可以将修改存储在命令中。 否则,您可能必须保存以前状态的深层克隆。有一个名为TouchPainter的应用程序,其源代码可用。它包含绘图、颜色混合、撤消/重做(惊人..!!)、保存/打开绘图 注意:它可能需要非常深入的Objective C知识。本

我正在做一个绘画应用程序。在这里,我画了一些图像。但我想添加撤消操作以删除以前绘制的项目。如何实现撤消操作?

以下是操作步骤。

请参阅此链接:

一般来说,您需要实现一个命令模式(或类似的模式)。 如果可以反转一个操作(例如,在图形程序中,放大一个圆),则可以将修改存储在命令中。
否则,您可能必须保存以前状态的深层克隆。

有一个名为TouchPainter的应用程序,其源代码可用。它包含绘图、颜色混合、撤消/重做(惊人..!!)、保存/打开绘图

注意:它可能需要非常深入的Objective C知识。本书“Apress.Pro.Objective-C.Design.Patterns.for.iOS.Mar.2010”介绍了整个应用程序的源代码,这里也提供了源代码:


我希望这将对您有所帮助:)祝你好运。

我将创建一个NSMutableArray,并在其上添加每个操作

NSMutableArray *ObjectList = [[NSMutableArray alloc] init];
[ObjectList addObject: TheSKSprite1];
[ObjectList addObject: TheSKSprite2];
[ObjectList addObject: TheSKSprite3];
...
然后检索最后添加的图形,将其从视图和阵列中删除

SKSpriteNode *OneDrawing = [ObjectList objectAtIndex:(int)[ObjectList count]-1];
[OneDrawing removeFromParent];
[ObjectList removeObjectAtIndex:(int)[ObjectList count]-1];

我希望它能帮助您。

您如何存储已绘制的对象?答案在很大程度上取决于您的代码。核心数据有一个很好的撤销/重做机制。我添加了一个保存绘制图像的按钮。所以,当我点击save按钮时,它被存储到核心数据中。