QuartzCore 之 CATransform3D.h

我们先来看一下官方提供的CATransform3D.h 类里面的内容。

QuartzCore 之 CATransform3D.h_第1张图片
CATransform3D 结构体

CATransform3D.h 开头我们看到的是CATransform3D的结构体表示的一个矩阵。

分别表示:

m11(x缩放), m12(y切变), m13(旋转), m14();

m21(x切变), m22(y缩放), m23(), m24();

m31(旋转), m32(), m33(), m34(透视效果,离视角近的地方放大,离视角远的地方缩小。正直/负值都有意义);

CGFloat m41(x平移), m42(y平移), m43(z平移), m44();

QuartzCore 之 CATransform3D.h_第2张图片
矩阵乘法计算

注意:

若m11 == m22,整体比例变换,

若m33>1,图形整体缩小,

若0 < m33 < 1,图形整体放大;

若 s < 0,发生关于原点的对称等比变换。


接下来就是官方提供的关于 CATransform3D 的一些方法:


正常状态

CATransform3DIdentity 是4x4单位矩阵,该矩阵没有缩放,旋转,歪斜,透视。该矩阵应用到图层上,就是设置默认值


判断是不是单位形变

CATransform3DIsIdentity    返回bool    判断是不是单位形变 


QuartzCore 之 CATransform3D.h_第3张图片
判断两个形变是否相同

CATransform3DEqualToIdentity 返回bool 判断两个形变是否相同


QuartzCore 之 CATransform3D.h_第4张图片
移动位置

CATransform3DMakeTranslation

tx:X轴偏移位置,往下为正数。(x轴方向为上下)

ty:Y轴偏移位置,往右为正数。 (y轴方向为左右)

tz:Z轴偏移位置,往外为正数。(z轴方向为里外,往外就是说指向你的方向为正)

具体来说tz的值越大,图层就越向外靠近,有3D效果


QuartzCore 之 CATransform3D.h_第5张图片
缩放

CATransform3DMakeScale

sx:X轴缩放,代表一个缩放比例,一般都是 0 --- 1 之间的数字。

sy:Y轴缩放。

sz:整体比例变换时,也就是m11(sx)== m22(sy)时,若m33(sz)> 1,图形整体缩小;若0<1,图形整体放大;若m33(sz)<0,发生关于原点的对称等比变换。

当sx = 1,sy = 1时。如图:

QuartzCore 之 CATransform3D.h_第6张图片

当sx = 0.5,sy = 0.5时。如图:

QuartzCore 之 CATransform3D.h_第7张图片

QuartzCore 之 CATransform3D.h_第8张图片
旋转效果

CATransform3DMakeRotation

angle:旋转的弧度,所以要把角度转换成弧度:角度 * M_PI / 180。

x:向X轴方向旋转。值范围-1 --- 1之间

y:向Y轴方向旋转。值范围-1 --- 1之间

z:向Z轴方向旋转。值范围-1 --- 1之间

ps: 向 X轴,Y轴都旋转,就是沿着对角线旋转。


QuartzCore 之 CATransform3D.h_第9张图片
???

CATransform3DTranslate

t:就是上一个函数。其他的都一样。CATransform3DMakeTranslation

就可以理解为:函数的叠加,效果的叠加。

funcCATransform3DTranslate(t:CATransform3D, _ tx:CGFloat, _ ty:CGFloat, _ tz:CGFloat) ->CATransform3D

Translate 't' by '(tx, ty, tz)' and return the result: t' = translate(tx, ty, tz) * t.

上边是官方的解释,根据官方的解释就是在原有的 t 的基础上进行形变,返回行遍之后的 t


QuartzCore 之 CATransform3D.h_第10张图片

CATransform3DScale

t:就是上一个函数。其他的都一样。CATransform3DMakeScale

就可以理解为:函数的叠加,效果的叠加。


QuartzCore 之 CATransform3D.h_第11张图片
旋转

CATransform3DRotate

t:就是上一个函数。其他的都一样。CATransform3DMakeRotation

就可以理解为:函数的叠加,效果的叠加。




翻转效果





返回 bool  判断是否仿射

返回 bool  判断是否仿射


QuartzCore 之 CATransform3D.h_第12张图片
放射效果

就是把一个 CATransform3D 对象转换成一个 CGAffineTransform 对象。

也就是把 CATransform3D 矩阵 转换成 CGAffineTransform 矩阵

变换函数同时提供了可以比较一个变换矩阵是否是单位矩阵,或者两个矩阵是否相等。


除了这些

也可以直接通过修改数据结构和键值来设置变换效果。通过修改矩阵中不同的值来达到3D变换效果

你可能感兴趣的:(QuartzCore 之 CATransform3D.h)