一、什么是CALayer?
在iOS系统中,你能看得到摸得着的东西基本都是UIview。比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIview。
其实UIview之所以显示在屏幕上,完全是因为它内部的一个层。
在创建UIview对象时,UIview内部会自动创建一个层(即CALayer对象),通过UIview的layer属性可以访问这个层。当UIview需要显示到屏幕上,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的层上,绘图完毕后,系统会将层拷贝到屏幕上,于是完成了UIview的显示。
二、CALayer的简单使用
上面已经说了,UIview能显示东西完全是因为CALayer对象,因此,通过操作这个CALayer对象,可以很方便调整UIview的一些界面属性,比如:阴影,圆角大小、边框和颜色等。
CALayer是被定义在QuartzCore框架中的,因此要想使用CALayer,先要导入QuartzCore框架。
三、UIview与CALayer的选择
UIview与CALayer都可以添加一些显示界面,并且显示效果是一样的,那么我们究竟选择谁呢?
![](/qrcode.jpg)
其实,对比CALayer,UIview多了一个事件处理的功能,也就是说CALayer不能处理用户的触摸事件,而UIview可以,
所以,如果显示出来的东西需要跟用户进行交互的话,用UIview;如果不需要跟用户进行交互两者皆可,
当然,CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量级。
四、UIview与CALayer的其他关系
1.UIview可以通过subviews属性访问所有的子视图,类似的,CALayer也可以通过sublayers属性访问所有子层。
2.UIview可以通过superview属性访问父视图,类似的,CALayer也可以通过superlayer属性访问父层。