矩阵的几何意义
代表的就是一个正方形
对上面图形做一个旋转,得到新的图形
由上图新的图形不仅仅是放大缩小,还发生了角度的变化
CALayer 仿射变换最常用的三个方法
1、旋转
函数CATransform3DMakeRotation
-(void)rotationAnimation {
/**
* @ param angle 旋转的度数
* @ param x = 1 围绕x轴旋转
* @ param y = 1 围绕y轴旋转
* @ param z = 1 围绕z轴旋转
*/
CATransform3D myTransform;
myTransform = CATransform3DMakeRotation(M_PI_4, 1.0, 1.0, 0.0);
_layer.transform = myTransform;
}
1-1、带有立体效果的旋转(透视视图)
函数CATransform3DRotate
-(void)rotationAnimation {
/**
* @ param angle 旋转的度数
* @ param x = 1 围绕x轴旋转
* @ param y = 1 围绕y轴旋转
* @ param z = 1 围绕z轴旋转
*/
CATransform3D myTransform;
// 但是这个方法没有透视效果也就是没有立体效果,换一种方法
// myTransform = CATransform3DMakeRotation(M_PI_4, 0, 1.0, 0.0);
myTransform = CATransform3DIdentity;
myTransform.m34 = -1.0/500.0;
myTransform = CATransform3DRotate(myTransform, M_PI_4, 0, 1.0, 0);
_layer.transform = myTransform;
}
效果图:
2、缩放
函数CATransform3DMakeScale
-(void)scaleAnimation {
/**
* @ param angle 旋转的度数
* @ param x = 1 围绕x轴缩放
* @ param y = 1 围绕y轴缩放
* @ param z = 1 围绕z轴缩放
*/
CATransform3D myTransform;
myTransform = CATransform3DMakeScale(0.8, 1, 0.5);
_layer.transform = myTransform;
}
3、平移
函数CATransform3DMakeTranslation
-(void)translationAnimation {
/**
* @ param angle 旋转的度数
* @ param x = 1 绕x轴平移的距离
* @ param y = 1 绕y轴平移的距离
* @ param z = 1 绕z轴平移的距离
*/
CATransform3D myTransform;
myTransform = CATransform3DMakeTranslation(20, 30, 5);
_layer.transform = myTransform;
}