Как узнать, какой подслой удалить? - PullRequest
0 голосов
/ 11 июня 2019

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

newBaseP3FolderLayer.layer.sublayers?.remove(at: 1)

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

Я заметил, что это происходит, только когда число подслоев равно 14. (Это также может быть верно для чисел выше этого), печатая количество подслоев при выходе из поста, я заметил, что код работал нормально (для значений, таких как 10 или 11 и 12) до тех пор, пока количество подпредставлений не достигло 14.

Как я могу это исправить?

Ответы [ 2 ]

5 голосов
/ 11 июня 2019

Это был бы лучший подход

for sublayer in sublayers {
    if sublayer.name == "yourLayerName" {
        sublayer.removeFromSuperlayer()
    }
}
1 голос
/ 11 июня 2019

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

var yourLayer: CALayer?

view.layer.sublayers?.forEach({ (layer) in
    if layer == yourLayer {
        yourLayer?.removeFromSuperlayer()
    }
})
...