UIView和CALayer概念上很相似,是一些被层级关系树管理的矩形块,同样也可以包含一些内容,管理子图层的位置。
UIView:属于UIKit.framework框架,继承于UIResponder,响应区域的触摸事件、布局和管理一个或者多个子视图。
CALAyer:属于QuartzCore.framework,是用来绘制内容的,对内容进行动画处理,继承于NSObject,不能处理用户事件。
每一个UIView都有一个CALayer实例的图层属性,我们也可以通过UIView的layer属性访问这个图层。UIView的职责就是创建并管理这个图层,以确保当子视图在层级关系中添加或者被移除的时候,他们关联的图层也同样对应在层级关系树中执行相同的操作。
对于UIView视图来说真正的负责内容展示的其实是它内部的CALayer,UIView只是将自身的展示任务交给了内部的CALayer完成,而它还肩负着一些其它的任务,比如说用户的交互响应,提供一些Core Animation底层方法的高级接口等。