UIView animation vs CALayers
Я борюсь с концептуализацией анимации с помощью CALayer в противоположность наследник UIView это собственные методы анимации. Бросьте"Ядро Анимации
5 ответов:
использование представлений для управления и слои для глаз конфеты. Слои не получают события, поэтому проще использовать представление для этих случаев, но когда вы хотите анимировать спрайт или фон и т. д. слои имеют смысл. События проходят прямо через слои к виду резервного копирования, так что вы можете иметь довольно визуальное представление, не испортив ваши события. Попробуйте наложить представление, которое вы просто используете для визуального представления, и вам придется самостоятельно передавать события tap в базовое представление.
An
UIView
всегда отображается вCALayer
. Когда вы используетеUIView
методы для анимации представления, вы эффективно манипулируете базовымCALayer
.Если вам нужно делать простые вещи, используйте
UIView
методы. Для более сложных ситуаций, или если вы хотите, чтобы слои не были связаны с каким-либо видом в частности, используйтеCALayers
.
Я сделал кучу приложений в прошлом году. Вот мое эмпирическое правило:
- используйте UIView, пока он не сделает то, что вы хотите.
- затем перейдите к CoreAnimation. Но прежде, чем вы войдете в него слишком много...
- Если вы пишете больше, чем несколько анимаций, используйте Cocos2D.
преобразования UIView являются только 2D и ограничены этим, преобразования слоев, однако, могут быть 3D, и вы должны использовать их, если хотите делать 3D-вещи, анимация UIView будет работать, если вы измените преобразование UIView или преобразование CALayer. Таким образом, на базовом уровне вы можете делать гораздо больше манипуляций, когда работаете со слоем, а не с видом.
Я не уверен, что я неправильно понимаю ответ Криса на "что Cocos2D делает лучше? Разве у вас нет других проблем, связанных с обработкой сенсорных событий и многими другими вещами, которые отсутствуют в openGL ES?"
похоже, что ответ предполагает, что Cocos2D не основан на структуре OpenGL ES, когда на самом деле это действительно так. Хотя это отличный игровой движок 2D, он реализует OpenGL для большей части его рендеринга-прикрепленный к физической библиотеке, он позволяет очень много интересные возможности для анимации - и Крис прав-это действительно намного меньше кодирования.