创建一个CGAffineTransform
使用如下几个函数可以帮我们快速创建一个CGAffineTransform
//平移
CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
//缩放
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
//旋转
CGAffineTransformMakeRotation(CGFloat angle)
我们来做一个图形的简单旋转
我们的需求是,将一个图形旋转45度。
CALayer *MamiLayer = [CALayer layer];
MamiLayer.backgroundColor = [UIColor redColor].CGColor;
MamiLayer.bounds = CGRectMake(0, 0, 100, 100);
MamiLayer.position = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height /2);
[self.view.layer addSublayer:MamiLayer];
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_4);
MamiLayer.affineTransform = transform;
混合变换
如果我们不仅需要旋转,还需要平移和缩放呢?,这时候单一的变换已经不能满足我们的需求了。
混合变换就应用而生
下面我们来看一段代码
//混合变换
CGAffineTransform identity = CGAffineTransformIdentity;
identity = CGAffineTransformTranslate(identity, 100, 0);//执行平移操作
identity = CGAffineTransformScale(identity, .5, .5);//执行缩放操作
identity = CGAffineTransformRotate(identity, M_PI_4);//执行旋转操作
MamiLayer.affineTransform = identity;
当使用混合变换的时候,初始,我们需要创建一个空矩阵,系统为我们提供了一个快捷的方法,可以让我们快速的创建一个空矩阵。
CGAffineTransform identity = CGAffineTransformIdentity;
当在使用混合变换的时候,一定要注意放射变换之间的影响,代码从上至下执行,我们一定要尽可能的减少变换之间的影响。