美文网首页
CGAffineTransform

CGAffineTransform

作者: Coder007 | 来源:发表于2016-04-28 13:56 被阅读72次

形变属性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,回到最原始的状态
// 清空transform,以前的平移、缩放、旋转都会消失
self.view.transform = CGAffineTransformIdentity;

相关文章

网友评论

      本文标题:CGAffineTransform

      本文链接:https://www.haomeiwen.com/subject/dekhrttx.html