2016-06-02 9 views
6

Ich habe eine benutzerdefinierte Ansicht, die eine Unterklasse von UIView ist. Ich habe der benutzerdefinierten Ansicht einige Unterlayer hinzugefügt, aber jetzt möchte ich sie entfernen.iOS - So entfernen Sie zuvor hinzugefügte Sublayer einer UIView

Ich habe versucht, dies zu tun:

self.layer.sublayers = nil; 

Aber das wird alles, einschließlich der anfänglichen Teilschichten der Ansicht zu entfernen.

Gibt es eine Möglichkeit, dies zu erreichen? Oder muss ich jedes Mal eine neue benutzerdefinierte Ansicht neu initialisieren?

Hinweis: App läuft in iOS 7 und höher.

Vielen Dank!

Antwort

13

Behalten Sie einen Verweis auf die hinzugefügte Teilschicht Entfernen Sie die Teilschicht von der Superschicht, wenn sie nicht benötigt wird.

würde der Code wie:

Obj C:

[thesublayer removeFromSuperlayer] 

Swift:

thesublayer.removeFromSuperlayer() 

//thesublayer is the name of the layer you want to remove 
+0

Warum habe ich nicht daran gedacht ... -_- Danke! –

6

Eine weitere Möglichkeit, spezifische Schicht von Superschicht zu entfernen, ist eindeutige Zeichenfolge in layer.name Eigenschaft zuweisen . Welche können Sie später vergleichen, um es zu identifizieren und zu entfernen.

1

Ich habe es in Swift 3 mit popLast().

self.layer.sublayers?.popLast() 
Verwandte Themen