1、UIView和CALayer的关系
UIView继承自UIResponder,可以处理系统传递过来的事件,如:UIApplication、UIViewController、UIView,以及所有从UIView派生出来的UIKit类。每个UIView内部都有一个CALayer提供内容的绘制和显示,并且作为内部RootLayer的代理视图。
CALayer继承自NSObject类,负责显示UIView提供的内容contents。CALayer有三个视觉元素:背景色、内容和边框,其中,内容的本质是一个CGImage。
官方解释(The Relationship Between Layers and Views)太过繁琐,我们可以简单的理解为UIView是对CALayer 的一个封装。
2、CALayer的三个视觉元素
出自 WWDC 2012: iOS App Performance: Graphics and AnimationsCALayer的三个视觉元素我们可以通过一个例子来理解,假设我们声明了一个视图对象并添加到屏幕上(UIView *view = [UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];), CALayer 是这样来呈现内容的:背景颜色为空(透明色),contents为空,前景框宽度为200的前景框,这个视图从视觉上看什么都看不到。这里我们需要着重了解【contents虽然是个id类型,但实质上contents就是CGImage类型,当然按照注释也可以是NSImage,但实质上就是一张图片】。
contents详解
网友评论