@@ -658,6 +658,13 @@ export class Animation extends AnimationBase {
658
658
const x = value [ Properties . rotate ] . x ;
659
659
const y = value [ Properties . rotate ] . y ;
660
660
const z = value [ Properties . rotate ] . z ;
661
+ const perspective = animation . target . perspective || 300 ;
662
+
663
+ // Set perspective in case of rotation since we use z
664
+ if ( x || y ) {
665
+ result . m34 = - 1 / perspective ;
666
+ }
667
+
661
668
result = iosHelper . applyRotateTransform ( result , x , y , z ) ;
662
669
}
663
670
@@ -932,11 +939,11 @@ function calculateTransform(view: View): CATransform3D {
932
939
// Order is important: translate, rotate, scale
933
940
let expectedTransform = new CATransform3D ( CATransform3DIdentity ) ;
934
941
935
- // Only set perspective if there is 3D rotation
936
942
// TODO: Add perspective property to transform animations (not just rotation)
937
- // if (view.rotateX || view.rotateY) {
938
- // expectedTransform.m34 = -1 / perspective;
939
- // }
943
+ // Set perspective in case of rotation since we use z
944
+ if ( view . rotateX || view . rotateY ) {
945
+ expectedTransform . m34 = - 1 / perspective ;
946
+ }
940
947
941
948
expectedTransform = CATransform3DTranslate ( expectedTransform , view . translateX , view . translateY , 0 ) ;
942
949
expectedTransform = iosHelper . applyRotateTransform ( expectedTransform , view . rotateX , view . rotateY , view . rotate ) ;
0 commit comments