2016-06-02 11 views
6

Ho una vista personalizzata che è una sottoclasse di UIView. Ho aggiunto alcuni sottolivelli alla visualizzazione personalizzata ma ora voglio rimuoverli.iOS - Come rimuovere sottotitoli aggiunti in precedenza di un UIView

Ho provato a fare questo:

self.layer.sublayers = nil; 

Ma questo rimuoverà tutto, compresi i sottolivelli iniziali della vista.

Esiste un modo per raggiungere questo obiettivo? O devo reinizializzare una nuova vista personalizzata ogni volta?

Nota: l'app viene eseguita in iOS 7 e versioni successive.

Grazie!

risposta

13

Mantieni un riferimento al sottolivello aggiunto Rimuovere il sottolivello dal super strato quando non è necessario.

Il codice sarebbe come:

Ob C:

[thesublayer removeFromSuperlayer] 

Swift:

thesublayer.removeFromSuperlayer() 

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

Perché non ho pensato a questo ... -_- Grazie! –

6

Un altro modo per rimuovere strato specifico da super strato è di assegnare stringa univoca in layer.name struttura . Che puoi confrontare in seguito per identificarlo e rimuoverlo.

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

L'ho fatto in Swift 3 utilizzando popLast().

self.layer.sublayers?.popLast() 
Problemi correlati