Анимация 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 для большей части его рендеринга - прикрепляется к библиотеке физики, что позволяет создавать очень интересные возможности для анимации - и Крис прав - это намного меньше, чем кодирование.