UIVIew
UIView之所以能显示是因为其内部的CALayer对象,实际上执行绘图的是CALayer对象,UIView其实更像是CALayer对象的管理控制器。
UIView的继承关系
NSObject > UIResponder > UIView
UIView常用的成员属性
- backgroundColor背景色
- alpha 透明度
- hidden 隐藏
- clipsToBounds 切边
UIView的几何属性
- Frame:描述UIView的大小以及在父控件上的位置。
- Bounds:描述UIView的大小以,x、y坐标皆为0。
- Center:用于确定视图的中心点位置,参照系是其父控件的坐标系统,在对View进行放大缩小、旋转时,该center值不会改变。
UIView视图的嵌套以及层次关系
因为一般情况下,后添加的子视图在视图层次上是会覆盖前子视图的。所以使用一下方法可以调整子视图的层次关系。
- insertSubview 在指定位置插入视图。
- bringSubview 将指定的子视图移动到最前或最后。
- exchangeSubview 交换同一父控件下两子视图的位置。
- removeFromSuperview 将子视图从父控件中移除。
UIView的交互属性
设置UIView的userInteractionEnable可以激活用户的交互特性
UIView的变形操作
CGAffineTransform仿射转换结构体代表一种用于仿射变换的矩阵。
结构体的参数指定从一个坐标系转化为另一个坐标系的点的规则。
我们使用仿射变换的时候,通常不会重新创建一个新的,而是在原有的仿射变换结构体上稍加修改。例如:
//获取现有的仿射变换结构体
let transform = view.transform
//在原有的仿射变换结构体上稍加修改
view.transform = transform.translatedBy(x: 0, y: 100)
几种常用常见的仿射变换
- CGAffineTransformMakeTranslation 指定xy平移
- CGAffineTransformTranslate 现有的矩阵平移
- CGAffineTransformMakeRotation 指定角度旋转
- CGAffineTransformRotation 现有的矩阵旋转
- CGAffineTransformMakeScale 指定xy缩放
- CGAffineTransformScale现有的矩阵缩放
- CGAffineTransformInvert 反转矩阵
- CGAffineTransformConcat 仿射变换效果叠加
仿射变换是以视图的center为基点的。并且仿射变换改变的只是视觉上的位置大小,实际上其frame的参数并没有被改变,也就是说,每次进行仿射变换的时候,都是以原本的坐标矩阵变换,其结果并不会保存累加下来。
自定义仿射变换
以上常见的仿射变换都是系统预封装好的。但我们可以通过 CGAffineTransformMake(sx,shx,shy,sy,tx,ty) 六个CGFloat参数进行自定义的视图仿射变换。
- sx 水平方向上的缩放因子
- sy 垂直方向上的缩放因子
- shx 水平方向上的斜切因子
- shy 垂直方向上的斜切因子
- tx 水平方向上的位移因子
- ty 垂直方向上的位移因子