1.UIWindow简介
UIWindow是一种特殊的UIView,通常在一个app中至少会有一个UIWindow。
iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了。
一个iOS程序之所以能显示在屏幕上,完全是因为它有UIWindow,也就是说,没有UIWindow就看不到任何UI界面。
状态栏和键盘都是特殊的UIWindow。
那么UIWindow是如何将View显示到屏幕上的呢
这里有三个重要的对象UIScreen,UIWindow,UIView。
UIScreen对象识别物理屏幕连接到设备
UIWindow对象提供绘画支持给屏幕
UIView执行绘画,当窗口要显示内容的时候,UIView绘画出他们的内容并附加到窗口上。
这样View就显示在窗口上了
2.UIWindow的创建
1.UIWindow是什么时候创建的?
我们可以发现,当我们新建一个项目,直接在stroyboard为view设置一个背景颜色,然后运行项目,就能看到换了背景颜色的view,这说明系统已经帮我们创建了一个UIWindow,那么这个UIWindow是什么时候创建的?
我们找到程序的入口main函数,来看程序的启动过程
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
此时我们可以根据UIApplicationMain函数了解程序启动的过程
根据传递的类名创建UIApplication对象,这是第一个对象
创建UIApplication代理对象,并给UIApplicaiton对象设置代理
开启主运行循环 main events loop处理事件,保持程序一直运行
加载info.plist,判断是否指定mian(xib 或者 storyboard)如果指定就去加载
当我们把