In an animation I added a lot of sublayers to a view, with:
[self.view.layer addSublayer:layer1];
[self.view.layer addSublayer:layer2];
....
I would like to remove all sublayers with an action. I already tried with this suggestion of a similar question:
rootLayer.sublayers = nil;
but it doesn't work...
Could you help me? Than you!
The sublayers
property of a CALayer
object returns a copy of the array. Setting it no nil does nothing about the sublayers. This however will do:
for (CALayer *layer in self.view.layer.sublayers) {
[layer removeFromSuperlayer];
}
Or, in Swift
self.view.layer.sublayers?.forEach { $0.removeFromSuperlayer() }
Swift 3.0 & Swift 4.0
Set the sublayers
property to nil
to remove all sublayers from a view.
view.layer.sublayers = nil
also you can add
.removeAll()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With