Core Animation - 变换<一>

仿射变换
在上一章中有一个时钟的例子,在这个例子中,就使用了UIView的transform属性做了变换,transform这个属性是CGAffineTransform类型的,这个方法大多数人应该都用过,在视图中也比较常用,比如旋转,平移,放大缩小这些操作。这里他们的变化都是在二维空间进行的,后面还会有三位变换。而不管它怎么变换,原先平行的边在变换后依然是平行的,

//旋转,这里的angle需要特别注意,使用中为弧度制,也可转化为角度制,M_PI_4为我们使用的单位常量,类似的还有M_PI_2(180度,即圆周率pi),M_PI(360度,2pi)
CGAffineTransformMakeRotation(CGFloat angle)
//放大缩小,为各边放大缩小的倍数,是边,不是整体
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
//平移,以原位置为参考,中心点偏移的距离,x,y为中心点坐标变化,可为负
CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
//这里的宏定义把弧度转化为了我们常用的度数
#define RADIANS_TO_DEGREES(x) ((x)/M_PI*180.0)

关于图层旋转的原理,是一个3X2的矩阵,见下图这里写图片描述
灰色数字为后面添加的,为什么要添加呢?高数里面我们知道矩阵相乘的规则,x*a + y*c+?*t,?不存在,所以就补了1,那么后面的0,0,1,根据公式相乘后还是1,是不会影响原值的,这只是为了方便运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingFire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值