2016-06-02 46 views
6

UIView'un bir alt sınıfı olan özel bir görünümüm var. Özel görünüme bazı alt katmanlar ekledim ancak şimdi onları kaldırmak istiyorum. iOS - Bir UIView'in Önceki Eklenen Alt Katmanlarını Kaldırma

bunu yaparken çalıştı:

self.layer.sublayers = nil; 

Ama bu görüş ilk alt katmanlar dahil her şeyi kaldırır.

Bunu başarmanın bir yolu var mı? Ya da her defasında yeni bir özel görünümü yeniden başlatmalı mıyım?

Not: Uygulama iOS 7 ve üstü sürümlerde çalışır.

Teşekkürler!

cevap

13

Alt katmana bir atıfta bulunulan ek Alt tabakayı gerekmediğinde süper katmandan çıkarın.

Obj C:

kod gibi olur

[thesublayer removeFromSuperlayer] 

Swift:

thesublayer.removeFromSuperlayer() 

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

Neden bunu düşünmedim ... -_- Teşekkürler! –

6

başka yolu da süper katmandan belirli katmanı kaldırmak için olduğu layer.name özelliğinde benzersiz dizeyi atamak . Hangisini tanımlamak ve kaldırmak için daha sonra karşılaştırabilirsiniz.

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

Swift 3'te popLast() kullanarak yaptım.

self.layer.sublayers?.popLast()