1、
view 是它的 根layer 代理,在view第一次显示和每次重绘的时候。
layer调用它的 drawInContext: 方法,
2、
在 layer 的 drawInContext:方法中,view(delegate)
调用 drawLayer:inContext:方法,
3、
在 view 的 drawLayer: inContext: 方法中,view 调用 drawRect:
另外:
CALayer 的代理,不需要遵循协议,理论上任何 NSObject 对象都可以作为
layer的代理,只要该对象能实现绘制layer的功能,layer的代理方法实际上是
NSObject (CALayerDelegate) 这个分类中定义的方法。
view的frame,bounds,背景颜色等属性的设置和获取,都是设置和获取它的根layer的。
view的center,实际上就是layer的position,而layer的position和layer的 anchorPoint(默认值:(0.5,0.5))有关,
所以如果 anchorPoint 发生了改变,view的center就不是控件的中心点了。
CALayer继承自 NSObject, UIView 继承自 UIResponder,所以 layer 不能响应事件,view 可以。