25 Stimmen

CATransform3D vs. CGAffineTransform?

Was ist der Unterschied zwischen den beiden?

Ich bin sicher, dass sie Vor- und Nachteile und Situationen haben, in denen sie besser abschneiden.

Gibt es Quellen, die die beiden vergleichen?

Ist ein besser für die Animation (ich denke, die CATransform3D)? Warum?

Ich glaube auch, irgendwo gelesen zu haben, dass die Klarheit des Textes ein Problem sein kann, kann man den Text besser skalieren?

24voto

Brad Larson Punkte 169275

Wie MSN sagte, werden sie in unterschiedlichen Fällen verwendet. CGAffineTransform wird für die 2D-Manipulation von NSViews, UIViews und anderen 2D-Kerngrafikelementen verwendet.

CATransform3D ist eine Core Animation-Struktur, die komplexere 3D-Manipulationen von CALayern durchführen kann. CATransform3D hat die gleiche interne Struktur wie eine OpenGL-Modell-View-Matrix, was Sinn macht, wenn man weiß, dass Core Animation auf OpenGL aufbaut (CALayers sind Wrapper für OpenGL-Texturen usw.). Ich habe festgestellt, dass diese Ähnlichkeit der internen Struktur, kombiniert mit einigen netten Hilfsfunktionen, die Apple bietet, können Sie einige ordentliche OpenGL-Optimierungen zu tun, wie ich post aquí .

Wenn Sie sich entscheiden müssen, welche Methode Sie verwenden wollen, fragen Sie sich, ob Sie mit Ansichten direkt in einem 2D-Raum (CGAffineTransform) oder mit den zugrunde liegenden Core Animation-Ebenen in 3D (CATransform3D) arbeiten wollen. Ich verwende CATransform3D häufiger, aber das liegt daran, dass ich sehr viel Zeit mit Core Animation verbringe.

7voto

MSN Punkte 51308

Eine ist für lineare 2D-Transformationen, die andere für dreidimensionale projizierte Transformationen. Das ist zumindest das, was ich der Dokumentation entnehmen konnte.

Wenn Sie nicht 3d auf den Bildschirm projizieren müssen, verwenden Sie die affine Transformation. Ansonsten verwenden Sie die 3d-Transformation. Die 3D-Transformation ist im Wesentlichen eine 4x4-Matrix, während die affine 2D-Transformation 3x2 ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X