ios transform 平移 缩放 旋转 CGAffineTransform

主要由这几个方法

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

完毕。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容