ios transform 平移 缩放 旋转 CGAffi
主要由这几个方法
CGAffineTransformMakeTranslation(平移)
CGAffineTransformMakeScale(缩放)
CGAffineTransformMakeRotation(旋转)
CGAffineTransformIdentity(还原到之前的状态)
另外还有几个叠加 ,大致意思是在一个transfrom基础上再做一次transform
CGAffineTransformTranslate
CGAffineTransformScale
CGAffineTransformRotate
接下来我们看下矩阵,这个是核心。
首先了解下矩阵的基础知识,矩阵乘法如图1

矩阵乘法有个前提条件,AB的话, A的列需要和B的行数相等。
那么我们来看,transform 怎么用到矩阵的,如图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);
完毕。