之前介绍了UIView动画的使用,UIView可以实现一般动画,但是更为复杂的动画,需要用core animation
core animation基于openGL 和 core graphics。
Core Animation是一套包含图形绘制、投影、动画的Objective-C类集合,该框架包含在QuartzCore.framework中,它因为被用于处理更为强大的平滑的转场效果而引入OS X Leopard和iOS而出名。
QuartzCore /Quartz 2D 基于core graphics;
CALayer
Layer Classes是core animation的基础。Layer Classes提供了一个抽象的概念,这个概念对于那些使用NSview和UIview的开发者来说是很熟悉的。基础层是由CAlayer类提供的,CAlayer是所有Core Animation层的父类。
同一个视图类的实例一样,一个CAlayer实例也有一个单独的superlayer和上面所有的子层(sublayers),它创建了一个有层次结构的层,我们称之为layer tree。layers的绘制就像views一样是从后向前绘制的,绘制的时候我们要指定其相对与他们的superlayer的集合形状,同时还需要创建一个局部的坐标系。layers可以做一些更复杂的操作,例如rotate(旋转),skew(倾斜),scale(放缩),和project the layer content(层的投影)。
其实CALayer是个简单的类,它是用来在屏幕上显示内容展示的矩形区域。那么和UIView区别是什么?
1.每个UIView 都有 CALayer,即 UIView.layer或者[UIView layer] ,这个layer叫做root layer。
2.UIView可以响应事件,而CALayer只负责显示。(UIView是有delegate的CALayer)
3.CALayer 有两个属性,position(相对于父类的位置)、anchorPoint(锚点,x范围0~1,y范围0~1,决定图层身上的哪个点会在position所指的位置),锚点在旋转的时候作为支点;
注:frame:(x,y,with,height) = bounds(x,y,width,height) + position(x,y)+锚点
CAAnimation
CAAnimation分为这4种,他们分别是
1.CABasicAnimation
通过设定起始点,终点,时间,动画会沿着你这设定点进行移动。
2.CA