IOS - Как удалить ранее добавленные подуровни UIView

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

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

self.layer.sublayers = nil;

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

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

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

Спасибо!

Ответ 1

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

Код будет выглядеть так:

Obj C:

[thesublayer removeFromSuperlayer]

Swift:

thesublayer.removeFromSuperlayer()

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

Ответ 2

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

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

Ответ 3

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

self.layer.sublayers?.popLast()

Ответ 4

Прежде всего, вы должны добавить имя в подслой со свойством theLayer.name

после этого вы можете расширить представление следующим образом:

extension UIView {
    func removeLayer(layerName: String) {
            for item in self.layer.sublayers ?? [] where item.name == layerName {
                    item.removeFromSuperlayer()
            }
        }
}