iOS 仿射变换(CGAffineTransform)

本文详细介绍如何使用CGAffineTransform进行图形的平移、缩放和旋转操作,包括单一变换和混合变换的实现方法。通过实例展示了如何将图形旋转45度,并介绍了如何结合平移、缩放和旋转进行复杂图形变换。

#创建一个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;
复制代码

当在使用混合变换的时候,一定要注意放射变换之间的影响,代码从上至下执行,我们一定要尽可能的减少变换之间的影响。

转载于:https://juejin.im/post/5c1a0df8e51d45255514a23b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值