美文网首页
CGAffineTransform And CATransfor

CGAffineTransform And CATransfor

作者: 从容到没边的优雅 | 来源:发表于2017-03-08 13:46 被阅读18次

    平时比较懒,好不容易有时间有兴致,那就学习下,算是小小的入门,

    参考资料:
    *[CATransform3D vs. CGAffineTransform?](CATransform3D vs. CGAffineTransform? - Stack Overflow)
    CGAffineTransform
    CATransform3D的函数学习
    对CoreGraphics和QuartzCore的理解

    解释

    一、 CGAffineTransform 是用于2D层面的,操作NSView、UIView或者其它2D Core Graphics元素,属于Core Graphics框架

    用途:视图的旋转,平移,缩放

    方法:CGAffineTransformMake //直接创建变换

    struct CGAffineTransform {
      CGFloat a, b, c, d;
      CGFloat tx, ty;
    };
    
    /* Return the transform [ a b c d tx ty ]. */
    CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b,
      CGFloat c, CGFloat d, CGFloat tx, CGFloat ty)
    

    const CGAffineTransform CGAffineTransformIdentity 可以回到最初样式, 参数值 [1,0,0,1,0,0]

    各个参数介绍:可以查看文档中的3*3矩阵

    • a,c:对应x轴,及宽缩放值
    • tx:x轴方向上偏移量
    • b,c:对应轴,及高缩放值
    • ty:y轴方向上偏移量

    其他的方法不做介绍了,直译即可

    二、 CATransform3D 是Core Animation的结构体,是用来做更复杂的关于CALayer的3D操作。CATransform3D有着与OPenGL模型视图矩阵相同的内部结构,原因在于Core Animation 是建立在OpenGL 之上的,CALayer是OpenGL结构的一种封装。

    用途:3D画面变幻

    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();
    
    };
    
    
    

    相关文章

      网友评论

          本文标题:CGAffineTransform And CATransfor

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