我有一个绘图应用程序,它使用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)
}
答案 0 :(得分:1)
总而言之,您可以将图层添加到视图中,然后处理视图,这将使生活更加轻松。
添加按钮时,可以执行
view.tag = 1
self.addSubView(view)
如果要删除它
let view = self.viewWithTag(1) as! UIView
view.removeFromSuperView()