视图在屏幕上可以是一个矩形块,它能够拦截类似鼠标点击或者触摸手势等用户交互方式. 并且在层级关系上可以互相嵌套,一个视图可以管理它所有的子视图的位置等.在开发项目过程中,这是非常常见的一个使用场景....苹果为何要如此设计?为何不用一个简单的层级来处理所有的事情. 其实原因在于职责分离,这样可以避免很多重复代码....这就是为何iOS开发界面使用UIKit 和UIView ,而Mac OS 开发界面使用AppKit 和 NSView....因为他们之间的用户交互手段不一样.但是它们在功能上是非常类似的,所以都有CALayer ,而CALayer 只处理显示上的需求,不做交互上的需求处理.这样设计就可以减少非常多不必要的代码....图层不能处理触摸事件,同样也要视图不能做的事情:
阴影,圆角,颜色边框
3D变换
非矩形范围
透明遮罩
多级非线性动画
CALayer's function
除了CALayer 类,CoreAnimation