一、简介
1、在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层
*@property(nonatomic,readonly,retain) CALayer layer;
2、当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了 UIView的显示。换句话说,UIView本身不具备显示的功能,拥有显示功能的是它内部的图层。UIView的CALayer类似UIView的子View树形结构,也可以向它的layer上添加子layer,来完成某些特殊的表示。
*- (void)addSublayer:(CALayer )layer;
3、对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以。所以,在选择的过程中,需要考虑到实际的情况 如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户进行交互,用UIView或者CALayer都可以当然,CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量级。
二、CALayer.h的属性
三、CALayer的子类
CALayer也很据功能衍生出许多子类,系统系统给我们可以使用的有如下几种:
1、CAEmitterLayer
QuartzCore框架中的CAEmitterLayer是一个粒子发射器系统,负责粒子的创建和发射源属性。通过它,我们可以轻松创建出炫酷的粒子效果。
2、CAGradientLayer
CAGradientLayer可以创建出色彩渐变的图层效果,如下:
141858_Mnu0_2340880.png
3、CAEAGLLayer
CAEAGLLayer可以通过OpenGL ES来进行界面的绘制。
4、CAReplicatorLayer
CAReplicatorLayer是一个layer容器,会对其中的subLayer进行复制和属性偏移,通过它,可以创建出类似倒影的效果,也可以进行变换复制,如下:
151642_Awcc_2340880.png
5、CAScrollLayer
CAScrollLayer可以支持其上管理的多个子层进行滑动,但是只能通过代码进行管理,不能进行用户点按触发。
6、CAShapeLayer
CAShapeLayer可以让我们在layer层是直接绘制出自定义的形状。
7、CATextLayer
CATextLayer可以通过字符串进行文字的绘制。
8、CATiledLayer
CATiledLayer类似瓦片视图,可以将绘制分区域进行,常用于一张大的图片的分不分绘制。
9、CATransformLayer
CATransformLayer用于构建一些3D效果的图层。
最后附上一张CALayer子类的一张表,如下:
屏幕快照 2016-06-01 上午9.33.57.png
四、CALayer的基本使用
1、常用的就是利用UIView的layer属性,设置圆角,边框,阴影
代码如下:
4C426AE4-DEAD-447C-81A9-30B22195BDE2.png
效果如下图:
7C9C83E1-74DC-4D5B-9912-073EAAA71000.png
网友评论