撤消Button Swift

时间:2015-02-26 03:53:41

标签: ios swift calayer undo

我有一个绘图应用程序,它使用CALayer子图层来实际绘制图像。我目前有一个IBAction,其中包含从超级层中删除子层的代码。但是每次我运行它时,都会出现一个BAD ACCESS错误,导致我的应用程序崩溃。我想知道为什么它不允许我删除子图层。此外,理论上,这种方法将完全删除所有层。理想情况下,我希望它只撤消最后绘制的图层。关于我应该做什么的任何建议?感谢。

var locale: CALayer {
    return layerView.layer
}

@IBAction func undoButton(sender: AnyObject) {
    var sublayers = self.view.layer.sublayers
    for layer in sublayers {
        layer.removeFromSuperlayer()
    }   
}

func setUpLayer() -> CALayer {
    locale.contents = image
    locale.contentsGravity = kCAGravityCenter

    return locale
}

func subLayerDisplay() {
    var newLayer = CALayer()
    var tempRect = CGRectMake(prevLocation.x, prevLocation.y, 50, 50)
    newLayer.frame = tempRect
    newLayer.contents = image

    self.view.layer.insertSublayer(newLayer, below: locale)
}

1 个答案:

答案 0 :(得分:1)

总而言之,您可以将图层添加到视图中,然后处理视图,这将使生活更加轻松。

添加按钮时,可以执行

view.tag = 1
self.addSubView(view)

如果要删除它

let view = self.viewWithTag(1) as! UIView
view.removeFromSuperView()