Transform(变换)
2015-11-12 16:17
183 查看
视图的
transform的类型是
默认地,一个视图的变换矩阵是
系统提供的变换方法如下:
一个视图进行变换后,它的
变化矩阵可以以链式(即对视图进行连续变换)来进行。系统提供方法来将一个变换应用到另一个变换上,这些方法名不包含
注意上面代码与下面代码的区别:
尽管两段代码都进行了两次变换,但是效果完全不同:第一段代码是连续变换的,就是说,第二次变换是在第一次变换的基础上进行的;而第二段代码的两次变换始终是以视图的初始状态为基础的。
系统提供了
为了移除从变换组合中移除一个变换,使用函数
最后,为了创建一个倾斜的变化,我们将手动创建一个:
transform属性改变了视图绘制的方式,例如,它可能会改变视图的可视尺寸和方向(注意:是可视的,即人眼看到的),但是并不影响视图的
bounds和
center。一个变换过的(transformed)视图依然会保持正确的表现:例如,一个旋转过的按钮依然可以在可视区域内点击。
transform的类型是
CGAffineTransform,它是一个结构体。系统提供了方法来创建三种基本类型的变换:旋转(rotation)、缩放(scaling)、位移(translation),方法名都以
CGAffineTransformMake...开头,第四种基本的变化类型,倾斜(skewing),没有现有的方法来实现。
默认地,一个视图的变换矩阵是
CGAffineTransformIdentity,它并没有什么效果。
let v=UIView(frame:CGRectMake(100,100,100,44)) v.backgroundColor=UIColor.redColor() v.transform=CGAffineTransformMakeRotation(45*CGFloat(M_PI)/180.0) //旋转45度,旋转的参数是以弧度制
系统提供的变换方法如下:
CGAffineTransformMakeTranslation:位移
CGAffineTransformMakeScale:缩放
CGAffineTransformMakeRotation:旋转
一个视图进行变换后,它的
frame会发生改变,但它的
bounds和
center保持不变。
变化矩阵可以以链式(即对视图进行连续变换)来进行。系统提供方法来将一个变换应用到另一个变换上,这些方法名不包含
Make.例如:
v2.transform=CGAffineTransformMakeTranslation(100, 100) v2.transform=CGAffineTransformTranslate(v2.transform, -100, -100)
注意上面代码与下面代码的区别:
v2.transform=CGAffineTransformMakeTranslation(100, 100) v2.transform=CGAffineTransformMakeTranslation(-100, -100)
尽管两段代码都进行了两次变换,但是效果完全不同:第一段代码是连续变换的,就是说,第二次变换是在第一次变换的基础上进行的;而第二段代码的两次变换始终是以视图的初始状态为基础的。
系统提供了
CGAffineTransformConcat函数来进行两次连续的变换,代码如下:
let t1=CGAffineTransformMakeTranslation(100, 100) let t2=CGAffineTransformMakeTranslation(-100, -100) v2.transform=CGAffineTransformConcat(t1, t2)
为了移除从变换组合中移除一个变换,使用函数
CGAffineTransformInvert,代码如下:
v2.transform=CGAffineTransformConcat(t1, t2) v2.transform=CGAffineTransformConcat(CGAffineTransformInvert(t2),v2.transform)
最后,为了创建一个倾斜的变化,我们将手动创建一个:
v2.transform=CGAffineTransformMake(1, 0, -0.2, 1, 0, 0)
相关文章推荐
- maven deploy 401错误
- java 九九乘法表
- 两个应用之间的跳转以及传值
- ios AFHTTPSessionManger下载补充
- 通过HttpClient获取服务器接口json数据已及解析
- String、StringBuffer与StringBuilder之间区别
- RSA的公钥和私钥
- oh-my-zsh主题
- win10屏幕键盘快捷键设置技巧(五种方法) win10怎样打开屏幕键盘
- 【VB.NET】——ADO与ADO.NET区别
- 滚动条美化jquery插件nicescroll的使用
- PAT1006. 换个格式输出整数
- 各种软件查看版本
- java中判断字符串是否为数字的方法
- linux 建库,编码,导入数据
- 深入 Qt5 信号槽新语法 重载函数 函数指针 c/c++风格类型转换 带有默认参数的槽函数
- FireBug调试工具
- Android异步消息处理机制完全解析(源码角度)
- PAT1005. 继续(3n+1)猜想
- android:theme