Ich habe Probleme mit der Konzeption von Animationen mit einem CALayer im Gegensatz zu UIViews eigenen Animationsmethoden. Werfen Sie " Core Animation " in diese und vielleicht kann jemand diese Konzepte von einer hohen Ebene aus artikulieren, damit ich besser visualisieren kann, was passiert und warum ich UIView-Animationen (mit denen ich jetzt ziemlich vertraut bin) nach CALayer migrieren möchte Animationen auf dem iPhone. Jede Ansicht in Cocoa-Touch erhält automatisch eine Ebene. Und anscheinend können Sie den einen und / oder den anderen animieren ?!? Sogar zusammen mischen?!? Aber wieso? Wo ist die Leitung? Was ist das Für / Wider für jeden?
Der Core Animation Programming Guide springt sofort in Layer & Timing Classes und ich denke, wir müssen einen Schritt zurücktreten und verstehen, warum diese verschiedenen Teile existieren und wie sie miteinander zusammenhängen.
Antworten:
Verwenden Sie Ansichten zur Steuerung und Ebenen für Augenweiden. Ebenen erhalten keine Ereignisse, daher ist es einfacher, eine Ansicht für diese Fälle zu verwenden. Wenn Sie jedoch ein Sprite oder Hintergründe usw. animieren möchten, sind Ebenen sinnvoll. Ereignisse werden direkt durch Ebenen in die Hintergrundansicht geleitet, sodass Sie eine hübsche visuelle Darstellung erhalten, ohne Ihre Ereignisse durcheinander zu bringen. Versuchen Sie, eine Ansicht zu überlagern, die Sie nur für die visuelle Darstellung verwenden, und Sie müssen Tap-Ereignisse selbst an die zugrunde liegende Ansicht weiterleiten.
quelle
An
UIView
wird immer zu a gerendertCALayer
. Wenn SieUIView
Methoden zum Animieren einer Ansicht verwenden, manipulieren Sie den Basiswert effektivCALayer
.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 sindCALayers
.quelle
Ich habe im letzten Jahr eine Reihe von Apps erstellt. Hier ist meine Faustregel:
quelle
UIView-Transformationen sind nur 2D-Transformationen und darauf beschränkt. LAyer-Transformationen können jedoch 3D-Transformationen sein. Sie sollten diese verwenden, wenn Sie 3D-Arbeiten ausführen möchten. UIView-Animationen funktionieren, wenn Sie entweder die UIView-Transformation oder die CALayer-Transformation ändern. Grundsätzlich können Sie also viel mehr Manipulationen vornehmen, wenn Sie mit einer Ebene anstatt mit der Ansicht arbeiten.
quelle
Ich bin mir nicht sicher, ob ich Chris 'Antwort auf "Was macht Cocos2D besser? Haben Sie dann keine anderen Probleme in Bezug auf die Behandlung von Berührungsereignissen und viele andere Dinge, die in openGL ES fehlen?" Missverstehe.
Die Antwort deutet darauf hin, dass Cocos2D nicht auf dem OpenGL ES-Framework basiert, obwohl es tatsächlich aktuell ist. Obwohl es sich um eine großartige 2D-Spiel-Engine handelt, implementiert sie OpenGL für einen Großteil des Renderings - verbunden mit einer Physikbibliothek - und bietet viele sehr interessante Animationsmöglichkeiten - und Chris hat Recht - es ist in der Tat viel weniger Codierung.
quelle