- 先运行main函数,进入程序
1.创建UIApplication
2.创建UIApplicationDelegate并成为UIApplication的代理
3.进入主循环,保持程序运行,处理事件
4.加载info.plist,判断有没有main.storyboard,如果有就加载。
- 进入程序后是怎么显示页面的
1.在 didFinishLaunchingWithOptions://程序启动完方法中
2.创建窗口
3.如果有就加载main.storyboard,如果没有就创建一个UIViewController
4.设置窗口的跟控制器为UIViewController
5.显示窗口
//1.创建UIWindow
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor greenColor];
// 2.创建窗口的跟控制器
UIViewController *vc = [[UIViewController alloc]init];
vc.view.backgroundColor = [UIColor yellowColor];
//3.设置根控制器
self.window.rootViewController = vc;
//4.显示窗口
[self.window makeKeyAndVisible];
UIWindow补充
- makeKeyAndVisible会让窗口成为主窗口,并且显示出来,可以通过打印application.Windows 来查看
- 创建的窗口交给windows这个数组管理:
- 在创建一个窗口显示出来,一个应用程序只有一个主窗口,并且显示出来的窗口,application管理,application有个Windows数组,存放显示出来的窗口,有一个例外态栏也是一个窗口,但是没有交给application管理。打印application.windows
- 键盘也是窗口,可通过以下代码证实
UITextField *textField = [[UITextField alloc] init];
_textField = textField;
[textField becomeFirstResponder];
[self.window addSubview:textField];
NSLog(@"%@",application.windows);
- 窗口也有优先级
- 窗口的优先级�属性self.window.windowLevel 查看
- 窗口的优先级排序 UIWindowLevelNormal < UIWindowLevelStatusBar < UIWindowLevelAlert