iOS程序是怎么显示页面的?

  • 先运行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

你可能感兴趣的:(iOS程序是怎么显示页面的?)