Cocoa touch 什么';这是UIView和CALayer之间的关系
我的理解是:在UIView和CALayer类中都有一个Cocoa touch 什么';这是UIView和CALayer之间的关系,cocoa-touch,design-patterns,uiview,calayer,Cocoa Touch,Design Patterns,Uiview,Calayer,我的理解是:在UIView和CALayer类中都有一个setNeedsDisplay,UIView是一个包含CALayer的复合类。但是UIView使用drawRect:,而CALayer使用drawLayer:inContext:它们都使用setNeedsDisplay来调用它。这是协议还是什么?所以我猜在UIView实现的某个时刻,会创建一个CALayer,并将该层的委托设置为UIView类?这两个类之间到底有什么关系?因此UIView中的drawRect:基本上是在解析它的内容,并调用它的
setNeedsDisplay
,UIView是一个包含CALayer的复合类。但是UIView使用drawRect:
,而CALayer使用drawLayer:inContext:
它们都使用setNeedsDisplay
来调用它。这是协议还是什么?所以我猜在UIView实现的某个时刻,会创建一个CALayer,并将该层的委托设置为UIView类?这两个类之间到底有什么关系?因此UIView中的drawRect:
基本上是在解析它的内容,并调用它的层的drawLayer:inContext:
?这是什么样的设计模式?我在想这两门课是怎么上的,谢谢 这是苹果所有的实施细节,所以我不能确定。此外,不同的视图类将与其图层具有不同的关系
例如,UIImageView
不调用drawRect:
。这可能是因为设置图像实际上会直接更新层的内容
属性,而无需使用渲染方法
也就是说,我认为最基本的UIView
行为是setNeedsDisplay
只是将调用转发给层。然后,在视图上调用drawLayer:inContext:
时,它设置UIGraphics
上下文内容并调用drawRect: