1、drawRect:方法之前,先调用了 [UIView(CALayerDelegate) drawLayer:inContext:] 和 [CALayer drawInContext:]
2、如果 [self.view addSubview:view]; 被注销掉 则 drawRect 不执行。可以肯定 drawRect方法是由 addSubview 函数触发的。
drawrect方法内为何第一行代码总要获取图形的上下文?
底层原理 :
每一个UIView都有一个layer,每一个layer都有个content,这个content指向的是一块缓存,叫做backing store当UIView被绘制时(从 CA::Transaction::commit:以后),CPU执行drawRect,通过context将数据写入backing store ,当backing store写完后,通过render server交给GPU去渲染,将backing store中的bitmap数据显示在屏幕上。所以在 drawRect 方法中要首先获取 context。