iOS—UI——CALayer
1.每个UIView内部都有一个CALayer在背后提供内容的绘制和显示,并且UIView的尺寸样式都由内部的Layer所提供。两者都有树状层级结构,layer内部有SubLayers,View内部有SubView。但是layer比View多了个AnchorPoint。
2.在View显示的时候,UIView作为layer的CALayerDelegate,View的显示内容由内部的CALayer的display。
3.CALayer是默认修改属性支持隐式动画的,在给UIView的Layer做动画的时候,View作为Layer的代理,Layer通过actionForLayer:forKey:向View请求相应地action(动画行为)
4.Layer内部维护着三分 Layer tree,分别是presentLayer Tree(动画树),modelLayer Tree(模型树),Render Tree(渲染树),在做iOS动画的时候,我们修改动画的属性,在动画的其实是Layer的presentLayer的属性值,而最终展示在界面上的其实是提供View的modelLayer
5.两者最显明的区别是View可以接受并处理事件,而Layer不可以