Оптимизация CALayer?

Я добавляю несколько CALayers в качестве подслоев слоя UIView. Содержимое каждого слоя - это отдельное изображение, загруженное с сервера. Каждый слой анимируется вне экрана в случайно сгенерированную позицию. Данные изображения загружаются асинхронно. Каждое изображение имеет размер примерно 300x300 или меньше.

В результате случайного размещения слои перекрываются, и некоторые из них закрываются слоями над ними. Это все хорошо.

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

У меня есть UIPanGestureRecognizer, который позволяет пользователю перетаскивать слоев вокруг экрана.

Я сталкиваюсь с проблемой производительности, когда количество добавляемых слоев приближается к 25-30 и становится все хуже. Анимации становятся прерывистыми и часто полностью отсутствуют (недавно добавленные слои просто появляются в их окончательном положении). И жесты панорамирования либо игнорируются, либо приводят к прерывистому изменению положения выбранного слоя.

Я полагаю, что я ' m убивает графический процессор с перекрытием всех слоев и анимацией другого слоя выше?

Есть предложения по повышению производительности?

Рекомендации по работе с большим количеством слоев?

Лучше ли начинать анимацию слоя в отдельном слое просмотра, чем ранее добавленные слои?

Спасибо!

7
задан Community 23 May 2017 в 11:53
поделиться