博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
transform初学习
阅读量:6757 次
发布时间:2019-06-26

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

1.什么是transform?

transform主要用于形变,位移和旋转,可用于动画。

CGAffineTransformMakeTranslation

2.transform常用的几种方法。

(1)CGAffineTransformMakeTranslation(a,b)

图片x坐标平移a的距离,y坐标平移b的距离。

(2)CGAffineTransformMakeScale(a,b)

图片水平方向放大x倍,竖直方向放大y倍

(3)CGAffineTransformMakeRotation(a)

图片按照锚点顺时针旋转a的角度。

以上三个方法都是在自身的transform上做一次相应的操作,比如我要旋转90°,调用一次方法三可以实现,但想要再一次旋转,旋转到180°,再调用一次方法三则不能实现,只能重新去更改方法三的旋转角度a的值。

(4)CGAffineTransformTranslation(view.transform,a,b)

(5)CGAffineTransformScale(view.transform,a,b)

(6)CGAffineTransformRotation(view.transform,a)

以上三个方法是在view.transform上调用,可多次调用,例如

_flowerImg.transform=CGAffineTransformRotate(_flowerImg.transform, M_PI/2)

这个多次调用便实现了图片90°,180°,270°的旋转。

 

3.自定义的平移变换

CGAffineTransformMake(a,b,c,d,tx,ty)

transform是一个结构体,其变量对应一个3*3的矩阵

 

如何通过这个齐次矩阵来变换坐标呢?

layer在屏幕中的坐标为(x,y),将其看成一个3*1的矩阵(x,y,1),

则变换后的坐标为:

(x' y' 1)= (x y 1) *  

则根据上面的矩阵相乘得出:

x'=ax+cy+tx ;

y'=bx+dy+ty ;

(x',y')即为变换后的坐标。

看不懂为什么要用矩阵改变位移的可以参考下面的链接:

 

4.改变transform的值后,恢复到原来的形状

CGAffineTransformIdentity

将你想要恢复的layer.transform设置为上面的值,即可恢复没有形变之前的状态。

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/zhoujieBlog/p/6061986.html

你可能感兴趣的文章
马哥5-2
查看>>
ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
查看>>
华为 5300系列 cpu oid
查看>>
风格化的ToggleButton
查看>>
vue.js 学习手记
查看>>
使用OSOT优化Windows 10虚拟桌面系统
查看>>
搭建spark源码运行环境报错及解决办法
查看>>
宝马汽车与中国马文化系列展示
查看>>
域账号锁定和管理工具
查看>>
linux文件系统
查看>>
HTTP协议头字段
查看>>
Linux文件系统之挂载/卸载
查看>>
textField限制输入整数0-100
查看>>
MySQL调优
查看>>
tableview 没有数据显示的时候,插入无数据的view
查看>>
数据结构与算法学习(一)
查看>>
ns3内核解析记录
查看>>
基于lnmp的Discuz论坛
查看>>
Xcode中的 编译过程以及编译器
查看>>
OSV配合windows 2008 r2 NPS 搭建802.1X认证环境
查看>>