图层和动画 (1) - 基本概念
视图:一个视图就是在屏幕上显示的一个矩形 块(比如图片,文字或者视频),它能够拦截触摸手势等用户输入。视图在层级关系中可以互相嵌套,一 个视图可以管理它的所有子视图的位置。在iOS当中,所有的视图都从一个叫做 UIVIew 的基类派生而来, UIView 可以处理触摸事件,可以支持基于Core Graphics绘图,可以做仿射变换(例如旋转或者缩放),或者简单的类似于滑动或者渐变的动画。
图层:层同样也是一些被层级关系树管理的矩形块,同样也可以包含一些内容(像图片,文本或 者背景色),管理子图层的位置。它们有一些方法和属性用来做动画和变换。和 UIView 最大的不同是 CALayer 不处理用户的 交互。
二者的关系:每一个 UIview 都有一个 CALayer 实例的图层属性,视图创建并管理这个图层,当子视图在层级关系中添加或者被移除的时候,他们关联的图层也被相应移除。实际上这些背后关联的图层才是真正用来在屏幕上显示和做动画, UIView 仅仅是对它的一个封装,提供了一些iOS类似于处理触摸的具体功能,以及Core Animation底层方法的高级接口。
图层的能力:
UIView 没有暴露出来的 CALayer的功能:
1. 阴影,圆角,边框
2. 3D变换
3. 非矩形范围
4. 透明遮罩
5. 多级非线性动画。
简单使用:
CALayer * aLayer = [CALayer layer];
aLayer.frame = CGRectMake(50, 200, 100, 80);
aLayer.backgroundColor = [UIColor orangeColor].CGColor;
[self.view.layer addSublayer:aLayer];