gpt4 book ai didi

iphone - 如何撤消和重做 iPhone 中的平滑线条?

转载 作者:行者123 更新时间:2023-12-03 18:48:00 26 4
gpt4 key购买 nike

我正在开发一个应用程序,我必须画一条平滑的线,所以我按照此链接来平滑线 iPhone smooth sketch drawing algorithm我遵循了kyoji的回答。但现在我不知道如何实现Undo Redo功能。

请帮忙

最佳答案

使用 NSUndoManager。但是,如果您在 Canvas 上绘制线条,则还需要保留它们的表示(以便可以将它们弹出)。

因此,无论您将它们收集为 UIBezierPath,还是使用形状图层,或者您自己的“点数组”,您都以相同的方式撤消。

因此,在绘制线条时,请记录您在绘图中使用的点。当绘图完成时(例如,touchesEnded),您想要“推送”您的绘图,并告诉撤消管理器如何撤消它。简单地说,它就像这样的几乎代码......

- (void)pushDrawing:(Drawing*)drawing
{
[self.stack push:drawing];
[self.undoManager registerUndoWithTarget: self
selector: @selector(popDrawing)
object: nil];
}

- (void)popDrawing:(Drawing*)drawing
{
Drawing *drawing = [self.stack pop];
[self.undoManager registerUndoWithTarget: self
selector: @selector(pushDrawing:)
object: drawing];
}

如果您使用一张 Canvas ,则可能需要重新绘制整个 Canvas ,尤其是在弹出绘图时。如果您使用 View 或图层,则可能不会...

查看 NSUndoManager 的文档...它可以在 iOS 上使用,并且有很好的示例。它会“记住”您是否撤消或重做,并且会做正确的事情,因此上述内容可以作为一个函数实现(但一开始每个方向都有一个函数更容易理解)。

关于iphone - 如何撤消和重做 iPhone 中的平滑线条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9925787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com