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