博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 仿射变换(CGAffineTransform)
阅读量:7124 次
发布时间:2019-06-28

本文共 1247 字,大约阅读时间需要 4 分钟。

#创建一个CGAffineTransform 使用如下几个函数可以帮我们快速创建一个CGAffineTransform

//平移CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)//缩放CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)//旋转CGAffineTransformMakeRotation(CGFloat angle)复制代码

我们来做一个图形的简单旋转 我们的需求是,将一个图形旋转45度。

CALayer *MamiLayer = [CALayer layer];MamiLayer.backgroundColor = [UIColor redColor].CGColor;MamiLayer.bounds = CGRectMake(0, 0, 100, 100);MamiLayer.position = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height /2);    [self.view.layer addSublayer:MamiLayer];    CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_4);MamiLayer.affineTransform = transform;复制代码

#混合变换 如果我们不仅需要旋转,还需要平移和缩放呢?,这时候单一的变换已经不能满足我们的需求了。 混合变换就应用而生 下面我们来看一段代码

//混合变换CGAffineTransform identity = CGAffineTransformIdentity;identity = CGAffineTransformTranslate(identity, 100, 0);//执行平移操作identity = CGAffineTransformScale(identity, .5, .5);//执行缩放操作identity = CGAffineTransformRotate(identity, M_PI_4);//执行旋转操作        MamiLayer.affineTransform = identity;复制代码

当使用混合变换的时候,初始,我们需要创建一个空矩阵,系统为我们提供了一个快捷的方法,可以让我们快速的创建一个空矩阵。

CGAffineTransform identity = CGAffineTransformIdentity;复制代码

当在使用混合变换的时候,一定要注意放射变换之间的影响,代码从上至下执行,我们一定要尽可能的减少变换之间的影响。

转载于:https://juejin.im/post/5c1a0df8e51d45255514a23b

你可能感兴趣的文章
Python类的继承和方法重写总结
查看>>
春季新增开源项目:可以斗图的 Markdown 编辑器,了解一下?
查看>>
SpringMVC架构设计分享
查看>>
前端知识总结
查看>>
【小松教你手游开发】【unity实用技能】unity性能问题查找方法
查看>>
学习笔记第二十二节课
查看>>
Rsync+Inotify 实时备份
查看>>
如何成为一名优秀的测试工程师(QA)——持续更新中
查看>>
分手后,小伙怒用Python爬取上万空姐照片,赢取校花选举大赛!
查看>>
mybatis和hibernate
查看>>
Angularjs进阶笔记(2)-自定义指令中的数据绑定
查看>>
Consul 与外部服务
查看>>
磁盘体系结构图
查看>>
【Zabbix】Zabbix触发器的告警原理及创建方法
查看>>
阿里云 Aliplayer高级功能介绍(五):多语言
查看>>
新手怎么通过网络推广引流
查看>>
find一些常用参数的例子
查看>>
PCB设计中的问题整理(三)
查看>>
redhat手动离线安装nginx遇到的问题openssl
查看>>
varnish应用
查看>>