transform属性作用:给我们的控件做一些形变,(平移,缩放,旋转)
平移
//右移100像素,下移20像素
//每次移动都是相对于上次位置
_redView.transform = CGAffineTransformTranslate(_redView.transform, 100, 20);
//每次移动都是相对于最开始的位置
_redView.transform = CGAffineTransformMakeTranslation(100, 20);
缩放
//横向缩放0.8,纵向缩放0.5
//每次缩放都是相对于最初的大小
_redView.transform = CGAffineTransformMakeScale(0.8, 0.5);
//每次缩放都是相对于上次的大小
_redView.transform = CGAffineTransformScale(_redView.transform, 0.5, 0.5);
旋转
//旋转90度
// 每次旋转都是相对于最初的角度
_redView.transform = CGAffineTransformMakeRotation(M_PI_4);
//每次旋转都是相对于现在的角度
_redView.transform = CGAffineTransformRotate(_redView.transform, M_PI_4);
计算方式
transform的结构如下
struct CGAffineTransform {
CGFloat a, b, c, d;
CGFloat tx, ty;
};
在view上的像素坐标假设为(x,y),那么新的坐标为(xn,yn)计算如下:
xn=ax+cy+tx;
yn=bx+dy+ty;
网友评论