Dans une animation, j'ai ajouté beaucoup de sous-couches à une vue , avec:
[self.view.layer addSublayer:layer1];
[self.view.layer addSublayer:layer2];
....
Je voudrais supprimer toutes les sous-couches avec une action ..__ J'ai déjà essayé avec cette suggestion d'une question similaire:
rootLayer.sublayers = nil;
mais ça ne marche pas ...
Pourriez-vous m'aider?
La propriété sublayers
d'un objet CALayer
renvoie une copie du tableau. Le réglage non nul ne fait rien pour les sous-couches. Cela fera cependant:
for (CALayer *layer in self.view.layer.sublayers) {
[layer removeFromSuperlayer];
}
Ou, à Swift
self.view.layer.sublayers?.forEach { $0.removeFromSuperlayer() }
Cela a fonctionné pour moi et corrigé le crash:
[self.view.layer.sublayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)]
J'ai changé la vue avec mon image UImageview
, et le crash est parti.
Swift 3.0 & Swift 4.0
Définissez la propriété sublayers
sur nil
pour supprimer tous les sous-couches d'une vue.
view.layer.sublayers = nil
aussi vous pouvez ajouter
.removeAll()
Swift 2.0:
for layer: CALayer in self.view.layer.sublayers! {
layer.removeFromSuperlayer()
}
ou
self.view.layer.performSelector("removeFromSuperlayer")