UIView和CALayer的区别和联系?
UIView:继承自UIResponder:NSObject ,UIResponder中定义了各种事件和事件传递的接口。视图的基类
CALayer:继承自NSObject
UIView提供以下两个方法,来进行iOS中的事件的响应和传递
- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event;
- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event;
区别:
UIView:可以响应事件,CALayer:不能响应事件
UIView:负责显示内容的管理 CALayer:负责显示视图的绘制
联系:
每个UIView内部都有一个CALayer在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部的 Layer 所提供。两者都有树状层级结构,layer 内部有 SubLayers,View 内部有 SubViews.但是 Layer 比 View 多了个AnchorPoint。
当UIView需要显示的时候,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上(CALayer上),系统将图层拷贝到屏幕上,完成UIView的显示。
UIView来自CALayer,高于CALayer,是CALayer的高层实现与封装。
网友评论