I have trouble with deleting all of layer\'s sublayers. I currently do this manually, but that brings unnecessary clutter. I found many topics about this in google, but no a
Swift (short version):
layer.sublayers?.forEach { $0.removeFromSuperlayer() }
For sure you can do:
self.layer.sublayers=nil;
as suggested by Pascal Bourque. But it's better to call the setter for sublayers property:
[self.layer setSublayers:nil];
To avoid any clean up issues if there might be.
Indiscriminately removing all sublayers causes nasty crashes in iOS 7, which can occur much later in the program's execution. I have tested this thoroughly using both rootLayer.sublayers = nil
and [rootLayer.sublayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)]
. There must be a system-created layer that's getting messed up.
You have to keep your own array of layers and remove them yourself:
[myArrayOfLayersIAddedMyself makeObjectsPerformSelector:@selector(removeFromSuperlayer)];