Core Animation - 变换<一>

简介: 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的矩阵,见下图

1.png

灰色数字为后面添加的,为什么要添加呢?高数里面我们知道矩阵相乘的规则,x*a + y*c+?*t,?不存在,所以就补了1,那么后面的0,0,1,根据公式相乘后还是1,是不会影响原值的,这只是为了方便运算。

目录
相关文章
Core Animation - 变换<三>
Core Animation - 变换<三>
58 0
Core Animation - 变换<三>
Core Animation - 变换<四>
Core Animation - 变换<四>
94 0
Core Animation - 变换<四>
Core Animation - 如何来绘制一个火柴人
Core Animation - 如何来绘制一个火柴人
137 0
Core Animation - 如何来绘制一个火柴人
Core Animation - 摇动+循环动态画圆
Core Animation - 摇动+循环动态画圆
90 0
Core Animation - 摇动+循环动态画圆
Core Animation - 图层行为
Core Animation - 图层行为
91 0
Core Animation - 图层行为
|
iOS开发
Core Animation - 图层几何学<一>
Core Animation - 图层几何学<一>
102 0
Core Animation - 图层几何学<一>
Core Animation - 变换<二>
Core Animation - 变换<二>
90 0
Core Animation - 变换<五>
Core Animation - 变换<五>
76 0
Core Animation - 渐变色CAGradientLayer
Core Animation - 渐变色CAGradientLayer
100 0
|
图形学
Core Animation -关键帧动画
Core Animation -关键帧动画
116 0