Почему частое переключение скрытого свойства CALayer вызывает крайнюю деградацию графики? - PullRequest
0 голосов
/ 07 февраля 2019

Я пишу IOS приложение, в котором на экране отображается одновременно CALayers (сотни).Обновление интерфейса (со скоростью около 50-60 Гц ) включает в себя удаление / добавление некоторых CALayers из / в иерархию слоев и изменение "скрытого" состояния других CALayers .Все обновления производятся в соответствии с общей CATransaction с отключенной ANY анимацией.

Частое удаление / добавление CALayers из иерархии не приводит к какой-либопроблемы с производительностью графики.Но частое изменение «скрытого» состояния CALayers приводит к снижению FPS, поэтому обновления графики перестают быть плавными и стабильными.Похоже, что GPU всегда опаздывает с обработкой обновленного экрана.

Кто-нибудь знает, в чем причина этого эффекта?В официальной документации нет ни слова о таких побочных эффектах скрытия / отображения слоев.Добавление / удаление и скрытие / отображение слоев, похоже, имеют последствия, аналогичные тому, что происходит со слоями: когда слой скрыт, он просто не обрабатывается вообще, что эквивалентно удалению (за исключением, возможно, того, что он все еще кэшируется где-то в GPU).?).Может быть, кто-то может это объяснить или столкнулся с такой же проблемой?

...