Frage UIView-Animation vs CALayers


Ich habe Probleme mit der Konzeption von Animationen mit einem CALayer im Gegensatz zu UIViews eigene Animationsmethoden. Werfen "Kernanimation"In diese und, naja, vielleicht kann jemand diese Konzepte von einem hohen Level aus artikulieren, so dass ich besser visualisieren kann, was passiert und warum ich UIView Animationen (die ich jetzt recht gut kenne) zu CALayer Animationen auf dem iPhone migrieren möchte Jede Ansicht in Cocoa-Touch erhält automatisch eine Ebene und Sie können sie animieren und / oder das andere?!? Mischen Sie sie sogar zusammen?!? Aber warum? Wo ist die Linie? Was ist das Pro / Con zu jedem?

Der Core Animation Programming Guide springt sofort in die Ebenen- und Timing-Klassen und ich denke, dass ich einen Schritt zurück gehen muss, um zu verstehen, warum diese verschiedenen Teile existieren und wie sie zueinander stehen.


75
2017-07-16 19:20


Ursprung


Antworten:


Verwenden Sie Ansichten für die Steuerung und Ebenen für Augenschmaus. Ebenen empfangen keine Ereignisse, daher ist es einfacher, eine Ansicht für diese Fälle zu verwenden. Wenn Sie jedoch ein Sprite, Hintergründe usw. animieren möchten, sind Ebenen sinnvoll. Ereignisse durchlaufen die Ebenen bis zur Hintergrundansicht, sodass Sie eine schöne visuelle Darstellung haben, ohne Ihre Ereignisse zu beeinträchtigen. Versuchen Sie, eine Ansicht zu überlagern, die Sie nur für die visuelle Darstellung verwenden, und Sie müssen die Tap-Ereignisse selbst an die zugrunde liegende Ansicht übergeben.


53
2017-07-26 05:35



Ein UIView wird immer auf a gerendert CALayer. Wenn Sie verwenden UIView Methoden, um eine Ansicht zu animieren, manipulieren Sie effektiv den zugrunde liegenden CALayer.

Wenn Sie einfache Dinge tun müssen, verwenden Sie die UIView Methoden. Verwenden Sie für komplexere Situationen oder wenn Sie Ebenen möchten, die keiner bestimmten Ansicht zugeordnet sind CALayers.


25
2017-07-16 20:01



Ich habe im letzten Jahr eine Menge Apps gemacht. Hier ist meine Faustregel:

  1. Verwenden Sie UIView, bis es nicht das tut, was Sie möchten.
  2. Dann gehe zu CoreAnimation. Aber bevor du dich zu sehr damit beschäftigst ...
  3. Wenn Sie mehr als ein paar Animationen schreiben, verwenden Sie Cocos2D.

21
2017-07-16 20:13



UIView-Transformationen sind nur 2D und sind darauf beschränkt, LAyer-Transformationen können jedoch 3D sein und Sie sollten diese verwenden, wenn Sie 3D-Objekte erstellen möchten. Die UIView-Animation funktioniert, wenn Sie entweder die UIView-Transformation oder die CALayer-Transformation ändern. Auf einer grundlegenden Ebene können Sie viel mehr Manipulationen vornehmen, wenn Sie mit einer Ebene statt mit der Ansicht arbeiten.


9
2017-07-16 19:34



Ich bin mir nicht sicher, ob ich Chris 'Antwort auf "Was macht Cocos2D besser?" Falsch verstehen. Hast du dann keine anderen Probleme bezüglich der Touch-Event-Handhabung und vieler anderer Dinge, die in openGL ES fehlen? "

Es klingt, als ob die Antwort darauf hindeutet, dass Cocos2D nicht auf dem OpenGL ES Framework basiert, obwohl es tatsächlich ist. Während es eine großartige 2D-Spielengine ist, implementiert es OpenGL für einen großen Teil seines Renderings. An eine Physikbibliothek angehängt ermöglicht es viele sehr interessante Möglichkeiten für Animationen - und Chris ist richtig - es ist tatsächlich viel weniger Codieren.


2
2017-11-15 22:24