看了iOS6编程实践第9章后,总结一下UIView和CALayer的异同点:
- UIView 负责绘制与事件处理,而CALayer只负责绘制。
- UIView的绘制也是交给CALayer的。
- UIView和CALayer都可以有下一层,都是树状结构。
- 自定义的UIView重写drawRect,自定义的CALayer重写drawInContext或重写委托者的drawLayer方法。
- drawRect方法中系统已经设置好上下文,而且背景颜色等也已经设置好,而drawLayer方法中需要自己push context和pop context以及设置背景颜色。
- UIView会在第一次显示或需要重绘时自动调用drawRect,而CALayer不会,需要显示调用setNeedsDisplay。