通过transfrom来修改位置.大小(缩放).旋转

时间:2021-02-05 10:20:42

transfrom是利用线性代数来存放一个控件(或许是图片)的具体信息.(由于可以通过transfrom直接操作控件.所以肯定直接或者间接的存储着点的信息和控件的大小等信息)

1.移动.左移右移或者上移下移:

CGAffineTransformMakeTranslation(X偏移量Y偏移量);

CGAffineTransformTranslate(在某个transform的基础上-一般为自身X偏移量Y偏移量);

2.改变大小(形变):

CGAffineTransformMakeScale(宽缩放的倍数高缩放的倍数);

CGAffineTransformScale(在某个transform的基础上-一般为自身宽缩放的倍数高缩放的倍数);

3.使用transfrom进行旋转

CGAffineTransformMakeRotation(旋转的弧度);

CGAffineTransformRotate(在某个transform的基础上-一般为自身旋转的弧度);

这里旋转使用的弧度是用PI来算的.正数就是正时针旋转.负数就是逆时针旋转(记不住就直接打个PI到参数里面然后加一个下划线).

进过上面的更改.图片肯定变了样.如果我们想恢复原样.不用搞得非常复杂,或者是投机取消.取消掉这个控件然后在初始位置增加一个上去.

其实苹果都为咱们封装好了.只用直接使用CGAffineTransformIdentity这个方法.一切的改动都会恢复原状.


不过我建议大家不要用transfrom同时控制旋转与移动.因为.上一篇介绍center.frame.bounds的文章里面提到了.iOS系统中每一个插件(比如一个按钮).都是一个矩形.虽说你可以通过各种手段来切割图形.比如让用户感觉是圆形的.但其实还是一个矩形的.想象一下.如果旋转了.看起来不是矩形.但是其实还是一个矩形.最左边的边就是最左边的点做垂直线下去.其他的边以此类推.如果移动成一个矩形那还是没问题.就怕可见的地方不是矩形,然后移动(平移).就不是"平移"了.(因为转动会改变这个图像的frame).