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()
}
}
}