在很多时候,都会笔试或者面试问到这个问题,其=自己总结了一下,可能其实和其他说的大同小异,但是结构要清晰。
一、UIWindow和UIView和CALayer的联系和区别;
//喜欢的点个❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️,关注成为粉丝吧。
1.UIWindow:
其实先说一下UIWindow,它在整个app当中只有一个UIWindow;
主要作用就是:提供一个区域用来显示UIView;将事件分发给UIView;与UIViewController一起处理屏幕的旋转事件。
2.接下来,当然就是常用到的UIView和CALayer;
UIView的继承结构为:UIResponder:NSObject
所属的框架是:/System/Library/Frameworks/UIKit.framework。UIKit主要是用来构建用户界面的,并且可以响应事件。
当然对于UIView,侧重于对内容的显示管理;其实是相对于CALayer的高层封装。
3.CALayer
其实就是一个图层,UIView之所以能显示在屏幕上,主要是它内部有一个CALayer对象。在创建UIView时,它内部会自动创建一个图层,当UIView需要显示在屏幕上的时候,会调用drawRect:方法进行绘图,并且会将所有内容绘制到自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,这样完成UIView的显示。
CALayer的继承结构:NSObject
也就是直接继承NSObject,而不能够响应事件。
所属的框架:/System/Library/Frameworks/QuartzCore.framework;
总结一下:(可能不太恰当,自己面试或者传授的时候,进行整理可以)
UIWindow、UIView、CALayer三者的关系
UIWindow:是UIView的子类,主要作用就是:提供一个区域来显示UIView;事件的分发
UIView:用来显示内容,可以进行用户事件的处理;
CALayer:用来绘制内容的,对内容进行动画处理,在UIView上进行显示,不能处理响应事件。
UIView和CALayer是相互依赖的关系。其实一切都可以从CALayer说起。
//喜欢的点个❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️