形变属性transform
- 在日常开发中,用到
transform
的机会比较少,至少大部分应用是用不到平移、旋转、缩放的;
- 可能是我从事的项目是动画比较少,用到
transform
的地方只有在键盘弹出收缩的时候调整view的位置
- 形变属性分成平移、旋转、缩放
平移
// 平移
// 第一个数代表x,整数表示向右,负数表示向左
// 第二个数代表y,整数表示向下,负数表示向上
self.view.transform = CGAffineTransformMakeTranslation(-100, 100);
旋转
// 旋转
// 参数是需要旋转的弧度
self.view.transform = CGAffineTransformMakeRotation(-M_PI_4);
缩放
// 缩放
// 第一个数代表x,表示水平方向上的缩放比例
// 第二个数代表y,表示垂直方向上的缩放比例
self.view.transform = CGAffineTransformMakeScale(0.8, 0.5);
注意点
- 带有make的方法都是创建一个干净的形变量,对比的对象是控件最初的位置和形状
// 平移
CGAffineTransformMakeTranslation(-100, 100);
// 缩放
CGAffineTransformMakeScale(0.8, 0.5);
// 旋转
CGAffineTransformMakeRotation(-M_PI_4);
- 如果旋转、缩放、平移一起使用,那么上面的这三个方法就不能使用了,需要使用的方法是在形变的基础上进行形变
//向左平移100,向下平移100
CGAffineTransform translation = CGAffineTransformMakeTranslation(-100, 100);
//水平和垂直方向上都缩小一半
CGAffineTransform scaleTranslation = CGAffineTransformScale(translation, 0.5, 0.5);
//旋转180°
CGAffineTransform rotateScaleTranslation = CGAffineTransformRotate(scaleTranslation, M_PI_2);
//设置transform
self.view.transform = rotateScaleTranslation;
// 清空transform,以前的平移、缩放、旋转都会消失
self.view.transform = CGAffineTransformIdentity;