2016-06-02 14 views
6

Mam niestandardowy widok, który jest podklasą UIView. Dodałem niektóre podwarstwy do widoku niestandardowego, ale teraz chcę je usunąć.iOS - usuwanie wcześniej dodanych podwarstw z UIView

Próbowałem w ten sposób:

self.layer.sublayers = nil; 

Ale to usunie wszystko w tym początkowych subwarstw widoku.

Czy jest jakiś sposób, aby to osiągnąć? Czy muszę za każdym razem ponownie zainicjować nowy niestandardowy widok?

Uwaga: aplikacja działa w systemie iOS 7 i nowszych wersjach.

Dzięki!

Odpowiedz

13

Zachowaj odwołanie do dodanej podwarstwy Usuń podwarstwę z super warstwy, gdy nie jest to konieczne.

Kod byłoby jak:

Obj C:

[thesublayer removeFromSuperlayer] 

Swift:

thesublayer.removeFromSuperlayer() 

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

Dlaczego nie pomyślałem o tym ... -_- Dzięki! –

6

Innym sposobem, aby usunąć określoną warstwę z Super warstwy przypisać unikalny ciąg w layer.name nieruchomości . Które można później porównać, aby zidentyfikować i usunąć.

for layer in sublayers { 
    if layer.name == "masklayer" { 
      layer.removeFromSuperlayer() 
    } 
} 
1

Zrobiłem to w Swift 3 przy użyciu popLast().

self.layer.sublayers?.popLast() 
Powiązane problemy