美文网首页
ios transform 平移 缩放 旋转 CGAffi

ios transform 平移 缩放 旋转 CGAffi

作者: 两个小棉袄 | 来源:发表于2019-03-10 16:40 被阅读0次

    主要由这几个方法

    CGAffineTransformMakeTranslation(平移)

    CGAffineTransformMakeScale(缩放)

    CGAffineTransformMakeRotation(旋转)

    CGAffineTransformIdentity(还原到之前的状态)

    另外还有几个叠加 ,大致意思是在一个transfrom基础上再做一次transform 

    CGAffineTransformTranslate

    CGAffineTransformScale

    CGAffineTransformRotate

    接下来我们看下矩阵,这个是核心。

    首先了解下矩阵的基础知识,矩阵乘法如图1

    图1

    矩阵乘法有个前提条件,AB的话,  A的列需要和B的行数相等。

    那么我们来看,transform 怎么用到矩阵的,如图2

    图2

    然后利用公式尽行套用,发现

    CGAffineTransformMake(CGFloat a,CGFloat b,CGFloat c,CGFloat d,CGFloat tx,CGFloat ty)

    平移:

    如果 c,b,d =0,a=1  那么 tx 就是图形按照x轴移动的距离,因此我们可以这样来表示x轴平移。

    CGAffineTransformMake(1,0,0,1,100,0)  ;

    同理y轴平移的话

    CGAffineTransformMake(1,0,0,1,0,100)  ;

    那么,x  y 轴同时移动呢?你可以自己写下试试看。

    再看缩放:

    如果b、d、tx、ty = 0,a 、d = 2,   那么新坐标x' = 2x,y' = 2y;

    CGAffineTransformMake(2,0,0,2,0,0)

    你也可以试试,a  和  d 用不同的值,看看效果。

    最后我们看下旋转:

    CGAffineTransformMake(CGFloat( cos(M_PI_4) ), CGFloat( sin(M_PI_4) ), -CGFloat( sin(M_PI_4) ), CGFloat( cos(M_PI_4) ), 0, 0) 

    这里用到sin  cos 等函数,原理和上面一样。

    例子中用的都是  CGAffineTransformMake 方法,

    我们直接用 会更方便。

    CGAffineTransformMakeTranslation(100,100)

    CGAffineTransformMakeScale(2,2)

    CGAffineTransformMakeRotation(M_PI_4); 

    完毕。

    相关文章

      网友评论

          本文标题:ios transform 平移 缩放 旋转 CGAffi

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