ios transform 平移 缩放 旋转 CGAffi

2019-03-10  本文已影响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); 

完毕。

上一篇下一篇

猜你喜欢

热点阅读