Я добавляю несколько CALayers в качестве подслоев слоя UIView. Содержимое каждого слоя представляет собой отдельное изображение, загруженное с сервера. Каждый слой анимируется от закадрового до случайно сгенерированной позиции. Данные изображения загружаются асинхронно. Каждое изображение размером примерно 300x300 или меньше.
В результате случайного размещения слои перекрываются, а некоторые перекрываются слоями над ними. Это все хорошо.
Я удаляю слои по мере того, как они полностью скрыты от глаз, используя предложение в ответ на этот вопрос Расчеты для определения покрытия выполняются в отдельном потоке.
У меня есть UIPanGestureRecognizer, который позволяет пользователю перетаскивать слои вокруг экрана.
Я сталкиваюсь с проблемой производительности, когда количество добавляемых слоев приближается к 25-30 и постепенно ухудшается. Анимации становятся прерывистыми и часто полностью отсутствуют (вновь добавленные слои просто появляются в своей конечной позиции). А жесты панорамирования либо игнорируются, либо приводят к прерывистому перемещению выбранного слоя.
Я предполагаю, что убиваю графический процессор со всеми перекрывающимися слоями и анимацией другого слоя выше?
Есть предложения по улучшению производительности?
Рекомендации по работе с большим количеством слоев?
Лучше ли анимировать начало слоя в отдельном слое view.layer, чем ранее добавленные слои?
Спасибо!