Я создал заставку для Leopard, в которой используется основная анимация. Он не делает ничего слишком сложного; использует дерево CALayers и CATextLayers для создания «таблицы» данных в следующей структуре:
- root
› maincontainer
› subcontainer
› row [multiple]
› cell [multiple]
› text layer
Максимум 50 CAL-слоев, отображаемых на экране одновременно.
После создания «таблицы» я добавляю анимацию «подконтейнера» в представление с помощью CABasicAnimation. Опять же, я не делаю ничего особенного - просто нарастаю.
Проблема в том, что, хотя анимация и происходит, смотреть ее больно. На моем компьютере для разработки, который представляет собой iMac 3,06 ГГц с 4 ГБ ОЗУ, это дергается, и кажется, что анимация разбивается на 10 этапов, вместо того, чтобы показывать постепенное изменение.
Становится хуже на ppc mac-mini, для которого предназначена заставка; он отказывается даже воспроизводить анимацию, обычно «твининга» от начала анимации (непрозрачность 0%) до середины (50%), а затем до завершения.
Я относительно новичок в ObjectiveC, и мой опыт основан на использовании сред со сборкой мусора, но я не могу поверить, что утекаю достаточно памяти в тот момент, когда заставка начинает вызывать такие проблемы.
Кроме того, я совершенно уверен, что это не проблема с оборудованием. Я протестировал встроенные заставки, которые используют базовую анимацию, и загрузил несколько бесплатных CA для сравнения, и они без проблем работают на обеих машинах.
В Google довольно мало информации об использовании CA в заставках или использовании CA в целом, а советов / руководств по профилированию / устранению проблем с заставками, похоже, не существует. Так что любая помощь, которую может предоставить сообщество, будет приветствоваться!
--- ОБНОВЛЕНИЕ ---
Кажется, что неявная анимация помогает немного сгладить ситуацию. По-прежнему отрывисто, но не так плохо, как пытаться анимировать все с помощью явной анимации, как в моем решении.