我有一个绘图应用程序,它使用 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)
}
最佳答案
总而言之,您可以将图层添加到 View 中,然后再处理 View ,这将使生活变得更加轻松。
当你添加按钮时,你可以这样做
view.tag = 1
self.addSubView(view)
当你想删除它时
let view = self.viewWithTag(1) as! UIView
view.removeFromSuperView()
关于ios - 撤销按钮 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28734175/