Core Animation这个名字是从Layer Kit演变而来,做动画只是Core Animation特性之一。
Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中。
从图层树开始,涉及一下Core Animation的静态组合以及布局特性。
图层和视图
在iOS当中,所有的 视图 都从UIView 基类派生而来,可以处理触摸事件,可以支持基于Core Graphics绘图,可以做仿射变换(例如旋转或者缩放),或者简单的类似于滑动或者渐变的动画。
CALayer和UIView最大的不同是CALayer不处理用户的交互,UIView仅仅是对图层的一个封装,提供了一些iOS类似于处理触摸的具体功能,以及Core Animation底层方法的高级接口。
CALayer的功能:
阴影,圆角,带颜色的边框
3D变换
非矩形范围
透明遮罩
多级非线性动画
需要创建 CALayer,并使用 Core Animation 时,需要导入QuartzCore库。
当满足以下条件的时候,可能更需要使用CALayer而不是UIView:
开发同时可以在Mac OS上运行的跨平台应用
使用多种CALayer的子类,并且不想创建额外的UIView去包封装它们所有
做一些对性能特别挑剔的工作,比如对UIView一些可忽略不计的操作都会引起显著的不同(尽管如此,你可能会直接想使用OpenGL绘图)
#pragma mark - 1.图层的树状结构
- (void)addBlueLayer{
// create subLayer
CALayer *blueLayer = [CALayer layer];
blueLayer.frame = CGRectMake(50, 50, 100, 100);
blueLayer.backgroundColor = [UIColor blueColor].CGColor;
// add layer to layerView
[self.layerView.layer addSublayer:blueLayer];
}
网友评论