1. CGAffineTransform定义
CGAffineTransform是个结构体,我们可以使界面平移、缩放和旋转操作。
struct CGAffineTransform {
CGFloat a, b, c, d;
CGFloat tx, ty;
};
2. 放射变换
2.1 平移
tx和ty分别代表X轴和Y轴方向上的位移。
CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
CGAffineTransformMakeTranslation(100, 10),显示如下

2.2 缩放
sx和sy分别代表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简单分析
本文详细介绍了CGAffineTransform的基本概念及其使用方法,包括平移、缩放、旋转等常见变换操作,并提供了具体的实现代码示例。
688

被折叠的 条评论
为什么被折叠?



