2016-06-02 3 views
6

У меня есть пользовательский вид, который является подклассом UIView. Я добавил некоторые подслои в пользовательский вид, но теперь хочу удалить их.iOS - Как удалить ранее добавленные подуровни UIView

Я попытался сделать это:

self.layer.sublayers = nil; 

Но это удалит все, включая начальные подслоям зрения.

Есть ли способ достичь этого? Или мне нужно каждый раз повторять инициализацию нового пользовательского представления?

Примечание: приложение работает в iOS 7 и выше.

Спасибо!

ответ

13

Сохраните ссылку на добавленный подуровень Удалите подуровень из суперслоя, если это не требуется.

Код будет, как:

Obj C:

[thesublayer removeFromSuperlayer] 

Swift:

thesublayer.removeFromSuperlayer() 

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

Почему я не подумал об этом ... -_- Спасибо! –

6

Другой способ удалить определенный слой из супер слоя присвоить уникальную строку в layer.name собственности , Который вы можете сравнить позже, чтобы идентифицировать и удалить его.

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

Я сделал это в Swift 3 используя popLast().

self.layer.sublayers?.popLast()