storyboard
//1.创建窗口
self.window= [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
//2.获取storyboard中箭头指向的控制器
UIStoryboard*storyboard = [UIStoryboardstoryboardWithName:@"Main" bundle:nil];
//UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"123"
bundle:nil];
UIViewController*vc = [storyboardinstantiateInitialViewController];
//3.设置window的主控制器
self.window.rootViewController= vc;
//4.显示窗口
[self.windowmakeKeyAndVisible];
xib
/通过xib加载控制器的步骤
//1.创建xib文件
//2.xib拖一个view去描述控制器的view
//3.告诉xib是描述控制器,设置file'owner为控制器,可以往控制器中拖线
//4.连线,告诉控制器哪个view描述你的view
//1.创建窗口
self.window= [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
//2.设置窗口根控制器
//2.1通过xib创建窗口的根控制器:initWithNibName
//NibName:xib名称
ViewController*vc = [[ViewControlleralloc]initWithNibName:@"VC"bundle:nil];
self.window.rootViewController= vc;
//3.显示窗口
[self.windowmakeKeyAndVisible];
UIWindows补充
6.1>自己创建窗口,窗口显示出来,两个条件。1.makeKeyAndVisible2.窗口不要被释放6.2>keyWindow:makeKeyAndVisible会让窗口成为主窗口,并且显示出来,打印apple
6.3>创建的窗口交给windows这个数组管理: ?
○在创建一个窗口显示出来,一个应用程序只有一个主窗口,并且显示出来的窗口,application管理,application有个Windows数组,存放显示出来的窗口,有一个例外 态栏也是一个窗口,但是没有交给application管理。打印application.windows
6.4>还有那些是窗口?键盘也是窗口,创建一个textField成为第一响应者,并且加到最里
显示在最前面,打印application.windows,就知道了。
6.5>为什么他们会显示在最前面,因为窗口有层级,他们的层级高
6.6
>windowLevel:UIWindowLevelNormal < UIWindowLevelStatusBar
< UIWindowLevelAlert
UIWindowLevelNormal:默认窗口的层级UIWindowLevelStatusBar :状态栏,键盘、UIWindowLevelAlert:UIActionSheet,UIAlearView
6.7>把window的层级设置为UIWindowLevelAlert,就会显示在最前面。
6.8>其实层级的数据类型是CGFloat,所以可以通过加减乘除来改变其层级
例如UIWindowLevelAlert