#创建一个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;复制代码
当在使用混合变换的时候,一定要注意放射变换之间的影响,代码从上至下执行,我们一定要尽可能的减少变换之间的影响。