У меня есть следующая строка кода, которая предназначена для предотвращения проблемы, когда подслой отображается поверх другого содержимого сообщений. Метод, в котором возбуждается эта строка, вызывается в момент выхода пользователя из поста.
newBaseP3FolderLayer.layer.sublayers?.remove(at: 1)
Но теперь, я думаю, в результате этого кода бывают случаи, когда другое видео внезапно перекрывает все остальные изображения.
Я заметил, что это происходит только тогда, когда количество подслоев равно 14. (Это также может быть верно для чисел выше этого) при печати количества подслоев при выходе из сообщения я заметил, что код работает нормально (для значений, таких как 10 или 11 и 12) до тех пор, пока количество просмотров не достигнет 14.
Как я могу это исправить?





Это был бы лучший подход
for sublayer in sublayers {
if sublayer.name == "yourLayerName" {
sublayer.removeFromSuperlayer()
}
}
Сохраните reference в layer, который вы хотите удалить при его создании, и используйте этот reference, чтобы удалить layer из его superLayer, т.е.
var yourLayer: CALayer?
view.layer.sublayers?.forEach({ (layer) in
if layer == yourLayer {
yourLayer?.removeFromSuperlayer()
}
})
Если вы не хотите использовать имена слоев, попробуйте записать это:
NSLog(@"%@",self.playerLayer.player.currentItem.asset);
Вы увидите следующее:
AVURLAsset: 0x60000063bac0, URL = file:///Temp/Loops/088_JB_HD.mov
Затем вы можете определить фактическое имя и URL-адрес вашего актива.
Можете ли вы предоставить больше кода, скриншоты, пожалуйста