UIView animation vs CALayers


Я борюсь с концептуализацией анимации с помощью CALayer в противоположность наследник UIView это собственные методы анимации. Бросьте"Ядро Анимации

5 75

5 ответов:

использование представлений для управления и слои для глаз конфеты. Слои не получают события, поэтому проще использовать представление для этих случаев, но когда вы хотите анимировать спрайт или фон и т. д. слои имеют смысл. События проходят прямо через слои к виду резервного копирования, так что вы можете иметь довольно визуальное представление, не испортив ваши события. Попробуйте наложить представление, которое вы просто используете для визуального представления, и вам придется самостоятельно передавать события tap в базовое представление.

An UIView всегда отображается в CALayer. Когда вы используете UIView методы для анимации представления, вы эффективно манипулируете базовым CALayer.

Если вам нужно делать простые вещи, используйте UIView методы. Для более сложных ситуаций, или если вы хотите, чтобы слои не были связаны с каким-либо видом в частности, используйте CALayers.

Я сделал кучу приложений в прошлом году. Вот мое эмпирическое правило:

  1. используйте UIView, пока он не сделает то, что вы хотите.
  2. затем перейдите к CoreAnimation. Но прежде, чем вы войдете в него слишком много...
  3. Если вы пишете больше, чем несколько анимаций, используйте Cocos2D.

преобразования UIView являются только 2D и ограничены этим, преобразования слоев, однако, могут быть 3D, и вы должны использовать их, если хотите делать 3D-вещи, анимация UIView будет работать, если вы измените преобразование UIView или преобразование CALayer. Таким образом, на базовом уровне вы можете делать гораздо больше манипуляций, когда работаете со слоем, а не с видом.

Я не уверен, что я неправильно понимаю ответ Криса на "что Cocos2D делает лучше? Разве у вас нет других проблем, связанных с обработкой сенсорных событий и многими другими вещами, которые отсутствуют в openGL ES?"

похоже, что ответ предполагает, что Cocos2D не основан на структуре OpenGL ES, когда на самом деле это действительно так. Хотя это отличный игровой движок 2D, он реализует OpenGL для большей части его рендеринга-прикрепленный к физической библиотеке, он позволяет очень много интересные возможности для анимации - и Крис прав-это действительно намного меньше кодирования.