【发布时间】:2015-08-12 15:10:09
【问题描述】:
我关注raywenderlich tutorial 使用 UIKit 制作绘图应用程序。我现在正在尝试添加功能以撤消最后一笔。理想情况下,我想撤消多达 10 次笔画。我试图弄清楚这样做的最佳方法是什么。我正在考虑创建另一个只有最后一笔的 ImageView 并在用户按下时制作ImageView.image = nil。在教程中的代码中有类似的东西。当触摸结束时,最新的笔画被合并到图像视图中,所有旧的笔画都处于正确的不透明度。我不确定如何将第三个(可能更多)imageivews 添加到此代码中以使其正常工作。有什么想法/更好的方法来解决这个问题吗? touchesEnded 的代码如下。
代码
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
if !swiped {
// draw a single point
drawLineFrom(lastPoint, toPoint: lastPoint)
}
// Merge tempImageView into mainImageView
UIGraphicsBeginImageContext(mainImageView.frame.size)
mainImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height), blendMode: kCGBlendModeNormal, alpha: 1.0)
tempImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height), blendMode: kCGBlendModeNormal, alpha: opacity)
mainImageView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
tempImageView.image = nil
}
【问题讨论】:
-
这里的小贴士:nshipster.com/nsundomanager
-
您可能希望将绘图数据保存在 Core Data 中,因为 Core Data 具有用于撤消、重做和保存的简洁功能。