CGAffineTransform

形变属性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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容