提到CALayer就不得不提另一相关结构UIView.
1.CALayer与UIView
我们先从CALayer与UIView的关系与渊源说起,UIView是每一个iOS开发者必不可少也是最先接触的部分,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。UIView可以响应与用户的交互,也就是用户摸得着的结构。但是UIView却不能直观的被用户看得见,它必须通过CALayer,借助图层结构才能显示给用户。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。
2.CALayer简介
CALayer包含在QuartzCore框架中,这是一个跨平台的框架,既可以用在iOS中又可以用在Mac OS X中。在使用Core Animation开发动画的本质就是将CALayer中的内容转化为位图从而供硬件操作。CALayer本身并不包含在UIKit中,它不能响应事件。由于CALayer在设计之初就考虑它的动画操作功能,CALayer很多属性在修改时都能形成动画效果,这种属性称为“隐式动画属性”。但是对于UIView的根图层而言属性的修改并不形成动画效果,因为很多情况下根图层更多的充当容器的做用,如果它的属性变动形成动画效果会直接影响子图层。另外,UIView的根图层创建工作完全由iOS负责完成,无法重新创建,但是可以往根图层中添加子图层或移除子图层。
下表列出了CALayer常用的属性: