Отрывистая / резкая (основная) анимация в заставке?

Я создал заставку для 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 в целом, а советов / руководств по профилированию / устранению проблем с заставками, похоже, не существует. Так что любая помощь, которую может предоставить сообщество, будет приветствоваться!

--- ОБНОВЛЕНИЕ ---

Кажется, что неявная анимация помогает немного сгладить ситуацию. По-прежнему отрывисто, но не так плохо, как пытаться анимировать все с помощью явной анимации, как в моем решении.


person Phillip B Oldham    schedule 17.06.2009    source источник


Ответы (1)


В заставке нет ничего особенного. Я предполагаю, что вы начали с Руководства по программированию базовой анимации ? Запустив его через инструменты, вы получите много информации о том, на что вы тратите слишком много времени.

Код, который вы используете для постепенного появления, был бы полезен. Для того, что вы описываете, вам даже не понадобится CABasicAnimation; вы можете просто установить свойства анимации слоев, и они по умолчанию анимируются. Убедитесь, что вы прочитали Неявная анимация. Остальная часть этой страницы, вероятно, тоже пригодится.

Большая часть вашей работы в CoreAnimation не мешает. Обычно я знаю, что он делает, и большинство проблем возникает из-за того, что я догадываюсь об этом или пытаюсь рассказать слишком много.

person Rob Napier    schedule 18.06.2009