美文网首页ios动画
二、CATransform3D 特效详解

二、CATransform3D 特效详解

作者: faterman | 来源:发表于2018-01-26 13:28 被阅读43次

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


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

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

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

    • transform
      结合anchorPoint的位置来对图层和图层上的子图层进行变化。
    • sublayerTransform
      结合anchorPoint的位置来对图层的自图层进行变化,不包括本身。

    概念解释

    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,发生关于原点的对称等比变换。

    相关文章

      网友评论

        本文标题:二、CATransform3D 特效详解

        本文链接:https://www.haomeiwen.com/subject/rlgiaxtx.html