remove all subLayers from a view

calayer, ios, objective-c

Solution

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() }

Problem

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!

Original source