iOS-图层的那点事(一)二维变换

图层变换 - 二维变换(仿射变换)(混合变换)(斜切变换)

这里 我们先认识一个宏
//度数转换
#define DEGREES_TO_RADIANS(x) ((x)/180.0*M_PI) //转换为多少度

仿射变换:
CGAffineTransform transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(15.0));  
CGAffineTransform transform = CGAffineTransformMakeScale(1, 1);            //设置拉伸或缩放(x为横向拉伸倍数,y为竖向拉伸倍数)
CGAffineTransform transform = CGAffineTransformMakeTranslation(100, 200);  //设置偏移量(x为横向偏移数(正值为右),y为竖向偏移数(正值为下)) 
_showView.layer.affineTransform = transform;    //添加仿射变换
斜切变换:
CGAffineTransform transform = CGAffineTransformIdentity;//创建一个斜切变换(-c为横向斜度,b为竖向斜度)
transform.c = -1;
transform.b = 0;
_showView.layer.affineTransform = transform;  //将创建的变换添加到图层中
混合变换:
  • 方法一:将已有变换添加变换属性生成新的变换
CGAffineTransform transform = CGAffineTransformIdentity;             //创建一个空的变换容器
transform = CGAffineTransformScale(transform, 0.5, 0.5);             //缩放
transform = CGAffineTransformRotate(transform, M_PI / 180.0 * 30.0);   //旋转
transform = CGAffineTransformTranslate(transform, 200, 0);          //位移 
_showView.layer.affineTransform = transform;                       //变换添加到图层中
  • 方法二:将两个变换合在一起
CGAffineTransform transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(1.0));    //设置旋转
CGAffineTransform transform2 = CGAffineTransformMakeScale(1, 1);    //设置拉伸或缩放(x为横向拉伸倍数,y为竖向拉伸倍数)
CGAffineTransform syntheticTransform = CGAffineTransformConcat(transform, transform2);         //将两个变换容器合成一个变换容器
_showView.layer.affineTransform = syntheticTransform;              //添加仿射变换
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容