通过storyboard和xib创建控制器

storyboard

   //1.创建窗口
   self.window= [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];

    //2.获取storyboard中箭头指向的控制器
    UIStoryboard*storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
   //UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"123" bundle:nil];

     UIViewController*vc = [storyboard instantiateInitialViewController];

  //3.设置window的主控制器
  self.window.rootViewController= vc;
 //4.显示窗口
 [self.window makeKeyAndVisible];

xib

 //通过xib加载控制器的步骤
 //1.创建xib文件
 //2.xib拖一个view去描述控制器的view
 //3.告诉xib是描述控制器,设置file'owner为控制器,可以往控制器中拖线
 //4.连线,告诉控制器哪个view描述你的view
 //1.创建窗口
 self.window= [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

 //2.设置窗口根控制器
 //2.1通过xib创建窗口的根控制器:initWithNibName
 //NibName:xib名称
 ViewController*vc = [[ViewController alloc] initWithNibName:@"VC"bundle:nil];
 self.window.rootViewController= vc;

  //3.显示窗口
 [self.window makeKeyAndVisible];

 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容