图像显示原理
1. UIView 和 CALayer的区别
view是layer的代理对象;view负责管理layer,layer负责渲染;
view初始化的时候默认会创建一个layer;设置view的frame和bounds等内部其实是修改layer对应属性。
- 两者最明显的区别是View可以接受并且处理事件,而Layer不可以。
- 所有从UIView派生出来的UIKit类,都直接或者间接的继承自UIResponder类,所以都会有响应事件。
- 而CALayer直接继承NSObject,并没有相应的处理事件的接口。
总结:
- 每个UIView内部都有一个CALayer在背后提供内容的绘制和显示,并且UIView的尺寸样式都由内部的Layer所提供.两者都有树状层级结构,layer内部有SubLayers,View内部有SubViews,但是Layer比View多了个AnchorPoint
- 在View显示的时候,UIView作为Layer的CALayerDelegate,View的显示内容由内部的CALayer的display.
- CALayer是默认修改属性支持隐士动画的,在给UIView的Layer做动画的时候,View作为Layer的代理,Layer通过actionForLayer: forKey: 向View请求相应的action(动画行为)
- Layer内