CGAffineTransformMakeTranslation每次都是以最初位置的中心点为起始参照
CGAffineTransformTranslate每次都是以传入的transform为起始参照
CGAffineTransformIdentity为最初状态,即最初位置的中心点
总结:带 Make的都是以初始位置参照,不带Make的是以传入的transform为起始参照,缩放 旋转动画同理1.平移视图
- (IBAction)translationView:(id)sender
{
CGAffineTransform transform;
// 如果tag == 0,向下移动300个点
// 如果tag == 1,回复初始位置
if (_subView1.tag == 0) {
transform = CGAffineTransformMakeTranslation(10.0, 300.0);
[_subView1 setTag:1];
} else {
transform = CGAffineTransformMakeTranslation(0, 0);
[_subView1 setTag:0];
}
[_subView1 setTransform:transform];
}
2.缩放视图
- (IBAction)scaleView:(id)sender
{
// 点一下,放大,tag = 1
// 再点一下,缩小 tag = 0
// sx表示水平方向缩放的比例
// sy表示垂直方向缩放的比例
CGAffineTransform transform;
if (_subView1.tag == 0) {
transform = CGAffineTransformScale(_subView1.transform, 1.2, 1.5);
[_subView1 setTag:1];
} else {
// 缩小的时候,需要注意比例的处理
transform = CGAffineTransformScale(_subView1.transform, 1.0 / 1.2, 1.0 / 1.5);
[_subView1 setTag:0];
}
[_subView1 setTransform:transform];
}
3.旋转视图
- (IBAction)rotationView:(id)sender
{
// 旋转角度的参数是弧度值,弧度制是一个浮点数,180度的角度对应的弧度值是PI , 90 = PI / 2, 45 = PI / 4
// 使用TransformMakexxx方法是相对视图初始位置的形变
CGAffineTransform transform = CGAffineTransformRotate(_subView1.transform, M_PI_4);
[_subView1 setTransform:transform];
}