您的位置:首页 > 其它

CALayer

2016-01-21 17:37 155 查看
一:简介

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

一: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方法将不会调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  绘图-CALaye