Анимация UIView против CALayers
Я борюсь с концептуализацией анимаций с CALayer, а не с собственными методами анимации UIView. Бросьте " Core Animation" в это, и, может быть, кто-то может сформулировать эти концепции с высокого уровня, чтобы я мог лучше визуализировать, что происходит, и почему я хочу перенести анимацию UIView (которая я довольно хорошо знакомы) в анимации CALayer на iPhone. Каждый вид в Cocoa -Touch автоматически получает слой. И, кажется, вы можете анимировать одного и/или другого?!? Даже смешайте их вместе!!? Но почему? Где линия? Что за/против каждого?
Руководство по программированию основной анимации сразу переходит в классы Layer и Timing, и мне кажется, что нужно сделать шаг назад и понять, почему эти разнообразные части существуют и как соотносятся друг с другом.
Ответы
Ответ 1
Используйте представления для управления и слои для глазных конфет. Слои не получают события, поэтому проще использовать представление для этих случаев, но когда вы хотите оживить спрайт или фоны и т.д., Слои имеют смысл. События проходят через слои к представлению резервной копии, поэтому вы можете иметь довольно визуальное представление, не вмешиваясь в свои события. Попытайтесь наложить представление, которое вы просто используете для визуального представления, и вам придется передавать события перехода непосредственно в основное представление.
Ответ 2
An UIView
всегда отображается в CALayer
. Когда вы используете методы UIView
для анимации представления, вы эффективно манипулируете базовым CALayer
.
Если вам нужно делать простые вещи, используйте методы UIView
. Для более сложных ситуаций или если вы хотите, чтобы слои не были связаны с каким-либо видом в частности, используйте CALayers
.
Ответ 3
В прошлом году я сделал кучу приложений. Здесь мое правило:
- Используйте UIView, пока он не сделает то, что вы хотите.
- Затем перейдите к CoreAnimation. Но прежде, чем вы попадете в него слишком много...
- Если вы пишете несколько анимаций, используйте Cocos2D.
Ответ 4
Преобразования UIView только 2D и ограничены этим, преобразования LAyer, однако, могут быть 3D, и вы должны использовать их, если хотите делать 3D-материал, анимация UIView будет работать, если вы измените преобразование UIView или преобразование CALayer. Таким образом, на базовом уровне вы можете делать гораздо больше манипуляций, когда работаете со слоем, а не с представлением.
Ответ 5
Я не уверен, что я ошибаюсь в ответ Криса на "Что Cocos2D делает лучше? У вас нет других проблем, связанных с обработкой сенсорных событий и многими другими вещами, которые не хватает в openGL ES?"
Похоже, что ответ подсказывает, что Cocos2D не основан на структуре OpenGL ES, когда на самом деле это актуально. Несмотря на то, что это отличный 2D-движок, он реализует OpenGL для большей части его рендеринга - прикрепляется к библиотеке физики, что позволяет создавать очень интересные возможности для анимации - и Крис прав - это намного меньше, чем кодирование.