Ich habe ein Video gemacht, das die Animation zeigt, die ich erreichen möchte: Hier ist es.
Beachten Sie, dass das Video die Aktion von der Seite zeigt. Das Kamerasymbol repräsentiert den Benutzer-POV. Es ist im Grunde eine Simulation einer Translation unter der Z-Achse, die durch eine Skalentransformation erreicht wird, wobei gleichzeitig eine unabhängige zweistufige 3D-Rotation entlang der X-Achse stattfindet.
Sieht und klingt einfach genug, oder? Falsch. Hier ist der ideale Code, der nicht funktioniert:
%Vor%Wenn Sie dies tun, wird die 3D-Drehung komplett ignoriert. Ich habe eine Reihe anderer Ansätze ausprobiert, und alle haben versagt.
CGAffineTransform
sein
Natürlich, wenn eine Lösung auftaucht, die einige Änderungen erfordert, könnte ich mich anpassen.
Vielen Dank im Voraus für jede Hilfe. Wenn Sie eine Klarstellung benötigen, fragen Sie bitte.
Sie können die gleiche Eigenschaft nicht animieren, ohne dass die erste Animation abgebrochen wird. Sie sollten die Kernanimation verwenden und entweder zwei Animationen oder eine Keyframe-Animation ausführen.
Indem Sie eine Animation für die Skalierung erstellen (die Sie als z-Translation verwenden können, wenn Sie möchten) und eine für die Drehung, die ihnen sehr spezifische Schlüsselpfade gibt, werden sie sich nicht gegenseitig aufheben.
%Vor%Da Sie drei sehr gute Keyframes haben, wäre der zu animierende Code zwischen den drei Keyframes leicht zu lesen und zu verstehen. Sie würden möglicherweise einen Teil des Steuerelements verlieren, wenn Sie das Timing der Skalierung getrennt von dem der rotierenden ändern möchten.
%Vor%In beiden Fällen habe ich die Perspektive gemacht, indem ich den sublayerTransform auf den Superlayer der animierenden Ansicht gesetzt habe (vorausgesetzt, es gibt dort nur eine Unteransicht mit einer Transformation)
%Vor%Ich habe einen Weg gefunden, aber es ist mehr wie ein Hack. Mach folgendes -
1) Erstellen Sie eine Ansicht mit transparentem Hintergrund - (diese Ansicht wird übersetzt) 2) Erstellen Sie eine Unteransicht von 1) - (diese Ansicht wird rotieren).
Verwenden Sie nun zwei Transformationen, eine Skalierungstransformation für Ansicht 1) und eine Rttaion-Transformation für Ansicht 2) und wenden Sie sie gleichzeitig an.
Tags und Links ios core-animation uiview catransform3d cgaffinetransform