CALayer

一:简介
CALayer 是屏幕上的一个具备可见内容的矩形区域,每一个UIView都有一个根CALayer,其全部的绘制(视觉效果)都是在这个layer上进行的。CALayer 包含在QuartzCore框架中,这是一个跨平台的框架,既能够用在iOS中又能够用在Mac OS X中。每一次UIView内部都默认关联着一个CALayerweb

一:CALayer经常使用属性
1. anchorPoint:和中心点position重合的一个点,称为锚点。照个人理解就是在layer上的钉的一个钉子,layer以它为固定点旋转或其余操做。锚点是相对于x,y的比例而言,默认在图层的中心点(0.5,0.5)的位置。
2. backgroundColor:图层的背景颜色
3. borderColor:边框颜色
4. borderWidth:边框宽度
5. bounds:图层大小
6. contents:图层显示内容
7. contentsRect:图层显示内容的大小和位置
8. cornerRadius:圆角半径
9. doubleSided:图层背面是否显示,默认是YES
10. frame:图层大小和位置,不支持隐式动画
11. hidden:是否隐藏
12. mask:图层蒙版
13. maskToBounds:子图层是否剪切图层边界,默认NO
14. opacity:透明度,相似于UIView的alpha
15. position:图层中心位置,相似于UIView的center
16. shadowColor:阴影颜色
17. shadowOffset:阴影偏移量
18. shadowOpacity:阴影透明度,默认为0,若是设置阴影必须设置此属性
19. shadowPath:阴影的形状
20. shadowRadius:阴影模糊半径
21. sublayers:子图层
22. sublayerTransform:子图层形变
23. transform:图层形变
隐式属性动画的本质是这些属性的变更默认隐含了CABasicAnimation动画实现框架

三:CALayer绘图
图层绘图有两种方法,无论使用哪一种方法绘制完必须调用图层的setNeedDisplay方法(注意是图层的方法,不是UIView的方法,前面咱们介绍过UIView也有此方法)
1. 经过图层代理drawLayer: inContext:方法绘制:经过代理方法进行图层绘图只要指定图层的代理,而后在代理对象中重写-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx方法便可。须要注意这个方法虽然是代理方法可是不用手动实现CALayerDelegate,由于CALayer定义中给NSObject作了分类扩展,全部的NSObject都包含这个方法。另外设置完代理后必需要调用图层的setNeedDisplay方法,不然绘制的内容没法显示。
2. 经过自定义图层drawInContext:方法绘制:在自定义图层中绘图时只要本身编写一个类继承于CALayer而后在drawInContext:中绘图便可。同前面在代理方法绘图同样,要显示图层中绘制的内容也要调用图层的setNeedDisplay方法,不然drawInContext方法将不会调用。ide