矩阵乘法 函数
A B相乘要A的列数等于B的行数才有定义,结果是一个A行B列的矩阵C,C的每一个元素值为A对应的行与B对应的列的元素乘积的和 spa
具体看这里 code
原理 orm
CGAffineTransform ip
CGAffineTransform 的结构以下 get
struct CGAffineTransform { CGFloat a; CGFloat b; CGFloat c; CGFloat d; CGFloat tx; CGFloat ty; }; typedef struct CGAffineTransform CGAffineTransform;
它其实表示的是一个矩阵 it
由于最后一列老是是(0,0,1),因此有用的信息就是前面两列 io
对一个view进行仿射变化就至关于对view上的每一个点作一个乘法 form
结果就是 基础
基本上就是若是不看c和b的话
a表示x水平方向的缩放,tx表示x水平方向的偏移
d表示y垂直方向的缩放,ty表示y垂直方向的偏移
若是b和c不为零的话,那么视图确定发生了旋转
从上面的式子也能够看出,仿射变化是不会对视图的基本形状发生该表的(矩形仍是矩形,不会变成平行四边形,梯形)
常量
CGAffineTransformIdentity const CGAffineTransformCGAffineTransformIdentity;
这个就是没有变化的最初的样子
建立一个仿射矩阵
改变已经存在的放射矩阵
应用仿射矩阵
评测矩阵
应用
放射矩阵一个经常使用的情形就是根据用户的手势来相应的改变视图的变换
UIPanGestureRecognizer 对应位移
UIPinchGestureRecognizer 对应缩放
UIRotationGestureRecognizer 对应旋转
一般若是须要看到实时的手指移动视图就相应的变换的技巧就是,每次接收到对应的gesture时间就相应的改变view的transform,而后吧这个gesture对应的translation、scale、rotation置为初始值。