删除子层中的动画

时间:2019-07-04 13:02:44

标签: swift

我正在创建脉动动画并将其添加为imageView的子层。完成一个动作后,我需要删除动画,但是正在努力寻找方法。

这是创建图层的时间

func addPulse() {
        let pulse = Pulsing(numberOfPulses: Float.infinity, radius: 140, position: imageView.center)

        pulse.animationDuration = 0.8
        pulse.backgroundColor = #colorLiteral(red: 0.8549019694, green: 0.250980407, blue: 0.4784313738, alpha: 1)

        self.view.layer.insertSublayer(pulse, below: imageView.layer)
    }

为了删除它,我使用以下代码,但是这使我的应用程序崩溃了

self.imageView.layer.sublayers = []

我尝试查看stackOverflow,这是他们建议的解决方案,但对我而言不起作用,您有什么建议吗?

2 个答案:

答案 0 :(得分:4)

您可以尝试

self.imageView.layer.sublayers?.forEach {
    if $0 is Pulsing {
        $0.removeFromSuperlayer()  
    }
}

答案 1 :(得分:0)

您是否已经尝试过以下方法:

for (CALayer *layer in self.view.layer.sublayers) {
    [layer removeFromSuperlayer];
}