ios动画

二、CATransform3D 特效详解

2018-01-26  本文已影响43人  faterman

iOS坐标系详解
CATransform3D 特效详解
iOS 3D变换 -- CALayer的transform
矩阵变换基础--CALayer的transform扩展解析
理解iOS中CGAffineTransform与矩阵的关系


左手坐标系,左上角为(0,0)

对于CATransform3D其实主要要理解的就是图层的矩阵变化方式。在CALayer的显示系统中,默认的相机使用正交投影,正交投影没有远小近大效果,所以,只能造成相应轴上的缩放。所以不管你旋转多少度都没有效果。

图层中有两个属性指定了矩阵变化,分别是:

概念解释

CATransform3D是一个4x4的CGFloat的矩阵。

1 - m11 x缩放 0 0 0
0 1 0 0
0 0 1 0
tx ty tz 1

CATransform3D 又是一个结构。他有自己的一个公式,可以进行套用。

struct CATransform3D
{
  CGFloat m11, m12, m13, m14;
  CGFloat m21, m22, m23, m24;
  CGFloat m31, m32, m33, m34;
  CGFloat m41, m42, m43, m44;
};

struct CATransform3D
{
CGFloat     m11(x缩放),    m12(y切变),      m13(旋转),     m14();

CGFloat     m21(x切变),    m22(y缩放),      m23(),             m24();

CGFloat     m31(旋转),      m32( ),   m33(),               m34(透视效果,要操作的这个对象要有旋转的角度,否则没有效果。正直/负值都有意义);

CGFloat     m41(x平移),     m42(y平移),     m43(z平移),     m44();
};

CATransform3DIdentity

CATransform3DIdentity是单位矩阵,该矩阵没有缩放,旋转,歪斜,透视。该矩阵设置到图层上就是设置默认值。

CATransform3DMakeTranslation

CATransform3D CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloat tz)

tx:x平移 ,ty:y平移,tz:平移
tx:X轴偏移位置,往右为正数。
ty:Y轴偏移位置,往下为正数。
tz:Z轴偏移位置,往外为正数。

CATransform3DMakeScale

CATransform3D CATransform3DMakeScale (CGFloat sx, CGFloat sy, CGFloat sz);

sx:X轴缩放,代表一个缩放比例,一般都是 0 --- 1 之间的数字。
sy:Y轴缩放。
sz:整体比例变换时,也就是m11(sx)== m22(sy)时,若m33(sz)>1,图形整体缩小,若0<1,图形整体放大,若m33(sz)<0,发生关于原点的对称等比变换。

上一篇 下一篇

猜你喜欢

热点阅读