Wie Ben schon gesagt hat, müssen Sie mit der UIView-Ebene arbeiten, indem Sie mit CATransform3D die Drehung der Ebene durchführen. Der Trick, um eine Perspektive zu erhalten, wie described here, ist der direkte Zugriff auf eine der Matrixzellen des CATransform3D (m34). Matrix Mathe war nie mein Ding, also kann ich nicht genau erklären, warum das funktioniert, aber es funktioniert. Sie müssen diesen Wert für Ihre anfängliche Transformation auf einen negativen Bruch setzen und dann die Transformation der Ebenenrotation auf diese anwenden. Sie sollten auch in der Lage sein, Folgendes zu tun:
UIView *myView = [[self subviews] objectAtIndex:0];
CALayer *layer = myView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0/-500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI/180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;
, die die Layer-Transformation für jede Umdrehung von Grund auf neu erstellt.
Ein vollständiges Beispiel (mit Code) finden Sie here, wo ich Touch-basierte Rotation und Skalierung auf ein paar CALayers, basierend auf einem Beispiel von Bill Dudney implementiert habe. Die neueste Version des Programms, ganz unten auf der Seite, implementiert diese Art von perspektivischer Operation. Der Code sollte relativ einfach zu lesen sein.
Die SublayerTransformation, auf die Sie in Ihrer Antwort verweisen, ist eine Transformation, die auf die Sublayer Ihrer UIViews CALayer
angewendet wird. Wenn Sie keine Unterschichten haben, machen Sie sich keine Sorgen. Ich benutze die sublayerTransform in meinem Beispiel, einfach weil es zwei CALayers in der einen Ebene gibt, die ich rotiere.
Ich bin nicht sicher, ob dies für u geeignet ist oder nicht aber wenn ich Animation machen, fand ich m14 für mich besser ist Gerade als Referenz :) – b123400
Vielen Dank! - Welche Werte gibst du? –
Ich setze es auf -1/900; – b123400