原创Blog,转载请注明出处
http://blog.csdn.net/hello_hwc?viewmode=contents
前言:这个系列要更新Core Animation的内容,但是CALayer是Core Animation的基础。
一 CALayer是什么?
摘自官网的一句话-Layers Provide the Basis for Drawing and Animations(Layers是绘图和动画的基础)
Layer是在3D空间中的2D平面。Layer管理的几何(例如rotate,transfrom),内容(image等),和可视属性(backgroundColor,alpha)等信息。Layer主要通过管理bitmap来维护自己的状态信息,从这一点上来说,Layer可以看作对象模型,因为他们主要用来管理数据。
Layer是基于bitmap的,它会捕获View要呈现的内容,然后cache在一个bitmap中,这个bitmap可以看作一个对象。这样每次进行操作,例如平移旋转等,只是bitmap的矩阵运算。基于Layer的动画过程如图
由于基于Layer的绘制是处理静态的Bitmap的,而bitmap的处理又是GPU所擅长的,所以它的效率要比基于View绘制的高很多,因为基于View绘制的每次都要进行drawRect的调用重新绘制。
二 Layer支持继承,支持添加Sublayer,支持对sublayer进行层次调整
常用的Layer子类
CAEmitterLayer |
发射器层,用来控制粒子效果 |
CAGradientLayer |
梯度层,颜色渐变 |
CAEAGLayer |
用OpenGL ES绘制的层 |
CAReplicationLayer |
用来自动复制sublayer |
CAScrollLayer |