web-dev-qa-db-fra.com

iOS - Comment supprimer les sous-couches précédemment ajoutées d'un UIView

J'ai une vue personnalisée qui est une sous-classe de UIView. J'ai ajouté des sous-couches à la vue personnalisée, mais maintenant je veux les supprimer.

J'ai essayé de faire ça:

self.layer.sublayers = nil;

Mais cela supprimera tout, y compris les sous-couches initiales de la vue.

Y'a-t-il une quelconque façon de réussir cela? Ou dois-je réinitialiser une nouvelle vue personnalisée à chaque fois?

Remarque: l'application fonctionne sous iOS 7 et supérieur.

Merci!

19
final static

Gardez une référence à la sous-couche ajoutée Retirez la sous-couche de la super-couche lorsque vous n'en avez pas besoin.

Le code serait comme:

Obj C:

[thesublayer removeFromSuperlayer]

Rapide:

thesublayer.removeFromSuperlayer()

//thesublayer is the name of the layer you want to remove
38
luckystars

Une autre façon de supprimer un calque spécifique du super calque consiste à affecter une chaîne unique dans layer.name propriété. Que vous pourrez comparer plus tard pour l'identifier et l'enlever.

for layer in sublayers {
     if layer.name == "masklayer" {
          layer.removeFromSuperlayer()
     }
 }
38
Kiran Jasvanee

Je l'ai fait en Swift 3 en utilisant popLast() .

self.layer.sublayers?.popLast()
11
meow2x