自我总结- CGAffineTransform

时间:2022-03-09 08:06:43

在应用中我们经常需要做一些仿射变换 可以用于 平移、旋转、缩放变换路径;

View有一个属性transform 可以指定一个 CGAffineTransform 即可完成仿射变换

1.平移变换

//  x方向移动一百 y不动
CGAffineTransform transform= CGAffineTransformMakeTranslation(,);
// viewanmination是需要进行变换的View
self.viewanmination.transform=transform
// 系统提供了一个便利方法直接指定 两种方法效果一样 // CGAffineTransformTranslate(<#CGAffineTransform t#>, <#CGFloat tx#>, <#CGFloat ty#>) // self.viewanmination.transform=CGAffineTransformTranslate(self.viewanmination.transform, 100, 0);

2 缩放

//x方向缩小0.5 y缩小0.5
CGAffineTransform transt= CGAffineTransformMakeScale(0.5, 0.5);
self.viewanmination.transform=transt; self.viewanmination.transform=CGAffineTransformScale(self.viewanmination.transform, 0.5, 0.5);

3 旋转

//输入需要旋转的角度
CGAffineTransform trans=CGAffineTransformMakeRotation(M_PI_4);
self.viewanmination.transform=trans;
self.viewanmination.transform=CGAffineTransformRotate(self.viewanmination.transform, M_PI_4);

当然这三种效果也可以组合着用 需要借助CGAffineTransformIdentity 这个理解为初始化即可 如下代码实现了旋转和缩放

//初始化坐标
CGAffineTransform trans=CGAffineTransformIdentity;
//旋转;
trans=CGAffineTransformRotate(trans, M_PI_4);
// 缩放
trans=CGAffineTransformScale(trans, 0.5, 0.4);
self.viewanmination.transform=trans;