UIView和CALayer之间的关系是什么?

时间:2011-07-29 17:45:48

标签: cocoa-touch design-patterns uiview calayer

所以我的理解是:UIView和CALayer类中都有setNeedsDisplay,UIView是一个包含CALayer的复合类。但是UIView使用drawRect:而CALayer使用drawLayer:inContext:他们都使用setNeedsDisplay来调用它。这是一些协议还是什么?所以我想在UIView的实现中,创建了一个CALayer,并将该层的委托设置为UIView类?这两个班级之间究竟有什么关系?那么UIView中的drawRect:基本上是解析它的内容并调用其层的drawLayer:inContext:?这是什么样的设计模式?我正试图解决这两个类如何工作的问题,谢谢。

1 个答案:

答案 0 :(得分:0)

这是Apple的所有实施细节,所以我不确定。此外,不同的视图类将与其图层具有不同的关系。

例如,UIImageViewexplicitly documented致电drawRect:。这可能是因为设置图像实际上直接更新了图层的contents属性,而无需通过渲染方法。

那就是说,我认为最基本的UIView行为是setNeedsDisplay只是将调用转发给图层。然后,当在视图上调用drawLayer:inContext:时,它会设置UIGraphics上下文内容并调用drawRect: