我关注了一个raywenderlich 教程 http://www.raywenderlich.com/87899/make-simple-drawing-app-uikit-swift关于使用 UIKit 制作绘图应用程序。我现在正在尝试添加撤消最后一笔的功能。理想情况下,我想撤消最多 10 次笔画。我正在尝试找出执行此操作的最佳方法是什么。我正在考虑创建另一个只有最后一笔的 ImageView 并制作ImageView.image = nil
当用户按下返回键时。在教程的代码中有与此类似的内容。当触摸结束时,最新的笔划将合并到图像视图上,所有旧的笔划都具有正确的不透明度。我不太确定如何将第三个(可能还有更多)imageivews 添加到此代码中以使其工作。有什么想法/更好的方法来解决这个问题吗? TouchsEnded 的代码如下。
Code
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
}
@SpaceShroomies:我发现/想出了一个很好的解决方案..
我使用的零件来自希普瑟 http://nshipster.com/nsundomanager,并且从雷文德利希教程 http://www.raywenderlich.com/87899/make-simple-drawing-app-uikit-swift.
这是我的解决方案:
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
//undoManager
let undo: UIImageView = undoManager?.prepareWithInvocationTarget(Temp2Image) as! UIImageView
UIGraphicsBeginImageContext(Temp2Image.frame.size)
Temp2Image.image?.drawInRect(CGRect(x: 0, y: 0, width: Temp2Image.frame.size.width, height: Temp2Image.frame.size.height), blendMode: kCGBlendModeNormal, alpha: 1.0)
TempImage.image?.drawInRect(CGRect(x: 0, y: 0, width: TempImage.frame.size.width, height: TempImage.frame.size.height), blendMode: kCGBlendModeNormal, alpha: opacity)
undo.image = Temp2Image.image
Temp2Image.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
TempImage.image = nil
}
这里重要的是设置什么UNDO应该回到即undo.image = Temp2Image.image
否则它不会把“它”改回来
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)