Frage

Ich erstelle einen iPad-App und mag die Benutzer mit der aktuellen Größe einer Ansicht aktualisieren. I verwendet, dies zu tun, indem die Skala eines CGAffineTransform der Berechnung und die xScale durch die Breite (der zugehörigen Ansicht) und die yScale durch die Höhe multipliziert. Ich möchte dies weiterhin tun, aber ich bin nicht mehr 2d Transformationen zu tun, und ich bin sicher, was Gleichung, die die Skaleninformationen von CATransform3D verwenden zu extrahieren.

Können Sie mir helfen?

War es hilfreich?

Lösung

Um den aktuellen Maßstab der Schicht erhalten Sie führen Sie einfach eine valueForKeyPath: auf der Schicht:

CGFloat currentScale = [[layer valueForKeyPath: @"transform.scale"] floatValue];

Andere Tasten können in Äpfel Core Animation Programming Guide

Andere Tipps

Ich bin nicht vertraut mit dem API aber CATransform3D sieht aus wie eine normale 4x4 Transformationsmatrix für 3D-Transformationen zu tun.

Unter der Annahme, dass es nicht mehr als eine Kombination aus Skalierung, Drehung und Translation steht, kann die Skalierungsfaktoren durch Berechnen der Größen der entweder die Zeilen oder Spalten von der linken oberen 3x3 extrahiert werden, je nachdem, ob CATransform3D ist Zeilen- oder Spaltenhaupt jeweils .

Zum Beispiel, wenn es zeilenweise, ist der Maßstab in der x-Richtung die Quadratwurzel aus (m11 m11 *) + (m12 m12 *) + (m13 * m13). Die Y- und Z-Skalen ähnlich die Größen der zweiten und dritten Reihe sein würde.

Aus der Dokumentation

scroll top