由于基于Layer的绘制是处理静态的Bitmap的,而bitmap的处理又是GPU所擅长的,所以它的效率要比基于View绘制的高很多,因为基于View绘制的每次都要进行drawRect的调用重新绘制。
** Layer支持继承,支持添加Sublayer,支持对sublayer进行层次调整**
常用的Layer子类
CAEmitterLayer 发射器层,用来控制粒子效果
CAGradientLayer 梯度层,颜色渐变
CAEAGLayer 用OpenGL ES绘制的层
CAReplicationLayer 用来自动复制sublayer
CAScrollLayer 用来管理可滑动的区域
CAShapeLayer 绘制立体的贝塞尔曲线
CATextLayer 可以绘制AttributeString
CATiledLayer用来管理一副可以被分割的大图
CATransformLayer 用来渲染3D layer的层次结构
管理Layer内容的几个函数
addSublayer:
insertSublayer:above:
insertSublayer:atIndex:
insertSublayer:below:
removeFromSuperlayer
replaceSublayer:with:
** anchorPoint和position**
和UIView不同,Layer主要由三个属性来设置位置(极少用Frame):
bounds - 设置大小
anchorPoint -设置锚点(锚点对后续的layer动画有很大影响,默认(0.5,0.5))
position - 锚点在superLayer中的位置
contentGravity这个属性。这个属性决定了contents如何填充。
具体分为两个方面,
方面一,位置方面具体如图