现在的位置: 首页 > 综合 > 正文

CATransform3DMakeRotation 说明

2013年10月16日 ⁄ 综合 ⁄ 共 678字 ⁄ 字号 评论关闭

          之前有说到iphone中进行动画变换的三种方法,在第三种方法里提到了动画可以改变的一个属性transform。在UIView和CALAyer中都有这个属性,但是两者所表示的含义却是不同。UIView中的transform表示的是2D的矩阵,而CALayer中的确实3D矩阵,包含3D变换。

           在UIView里面的transform已经在SDK文档里面有详细的介绍,而且框架也提供了详细的变换方法。在3D的方式下大部分情况与2D相同,费解的是旋转变换。变换方法原型: CATransform3D CATransform3DMakeRotation(CGFloat angle, CGFloat x, CGFloat y, CGFloat z); 第一个参数是旋转角度,后面三个参数形成一个围绕其旋转的向量,起点位置由UIView的center属性标识。
           在这里需要说明的是在3D变换的时候,如果是变换的向量和屏幕垂直,那么就会相当于2D的旋转变化。如果不是垂直的,系统会现将整个画面调整到与这个向量垂直(没有动画),再进行旋转。所以会形成一个跳跃,破坏动画的连贯。
   所以如果有这类变换的情况请尽量考虑动画的连贯,先将view动画变换到和向量垂直,然后进行旋转,最后再恢复和屏幕平行。

CATransform3DMakeRotation
CATransform3DMakeRotation 总是按最短路径来选择,当顺时针和逆时针的路径相同时,使用逆时针。若需要使其按顺时针旋转,用 CAKeyframeAnimation 并在在顺时针路径上增加几个关键点即可。

抱歉!评论已关闭.