CGAffineTransform是个结构体,我们可以使界面平移、缩放和旋转操作。
struct CGAffineTransform {
CGFloat a, b, c, d;
CGFloat tx, ty;
};
tx
和ty
分别代表X轴和Y轴方向上的位移。
CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
CGAffineTransformMakeTranslation(100, 10)
,显示如下
sx
和sy
分别代表X轴和Y轴方向上的缩放。
CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
CGAffineTransformMakeScale(0.6, 0.6)
,显示如下
angle
表示旋转角度(大于0顺时针,小于0逆时针),M_PI_2
表示90度。
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
CGAffineTransformMakeRotation(M_PI_2)
,显示如下
CGAffineTransformInvert
可以反转原有的效果
CGAffineTransform CGAffineTransformInvert(CGAffineTransform t)
CGAffineTransformInvert(CGAffineTransformMakeRotation(M_PI_2))
,显示如下
CGAffineTransformConcat
可以组合两种动画效果
CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2)
CGAffineTransformConcat(CGAffineTransformMakeRotation(M_PI), CGAffineTransformMakeScale(0.5, 0.5))
,显示如下
// 单位矩阵,可以用于初始化或者还原
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简单分析