iOS CGAffineTransform仿射变换

1. CGAffineTransform定义

CGAffineTransform是个结构体,我们可以使界面平移、缩放和旋转操作。

struct CGAffineTransform {
    CGFloat a, b, c, d;
    CGFloat tx, ty;
};

2. 放射变换

2.1 平移

txty分别代表X轴和Y轴方向上的位移。

CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)

CGAffineTransformMakeTranslation(100, 10),显示如下
在这里插入图片描述

2.2 缩放

sxsy分别代表X轴和Y轴方向上的缩放。

CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)

CGAffineTransformMakeScale(0.6, 0.6),显示如下
在这里插入图片描述

2.3 旋转

angle表示旋转角度(大于0顺时针,小于0逆时针),M_PI_2表示90度。

CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)

CGAffineTransformMakeRotation(M_PI_2),显示如下
在这里插入图片描述

2.4 反转

CGAffineTransformInvert可以反转原有的效果

CGAffineTransform CGAffineTransformInvert(CGAffineTransform t)

CGAffineTransformInvert(CGAffineTransformMakeRotation(M_PI_2)),显示如下
在这里插入图片描述

2.5 组合

CGAffineTransformConcat可以组合两种动画效果

CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2)

CGAffineTransformConcat(CGAffineTransformMakeRotation(M_PI), CGAffineTransformMakeScale(0.5, 0.5)),显示如下
在这里插入图片描述

3. 其他属性和方法

// 单位矩阵,可以用于初始化或者还原
CG_EXTERN const CGAffineTransform CGAffineTransformIdentity

// 在transform基础上平移
CG_EXTERN CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty)

// 在transform基础上缩放
CG_EXTERN CGAffineTransform CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)

// 在transform基础上旋转
CG_EXTERN CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)

// 判断transform是否相等
CG_EXTERN bool CGAffineTransformEqualToTransform(CGAffineTransform t1, CGAffineTransform t2)

// 得到新的point
CG_EXTERN CGPoint CGPointApplyAffineTransform(CGPoint point, CGAffineTransform t)

// 得到新的size
CG_EXTERN CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t)

// 得到新的rect
CG_EXTERN CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t)

关于CGAffineTransform内部的矩阵变换可参考CGAffineTransform简单分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值