zoukankan      html  css  js  c++  java
  • 多控制器之UIWindow

    UIWindow

    简介

    • UIWindow是一种特殊的UIView,通常一个app中至少有一个UIWindow
    • 程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上

    创建和相关属性

    • 应用程序的启动原理中,第四步中如果有Main

      Info.plist文件,判断有没有Main,如果有,会去加载Main.storyBoard
      1.创建一个窗口UIWindow
      2.帮你创建Main.storyBoard当中箭头指向的控制器,它会把控制器设为窗口的根控制器,
        并且,把控制器的View添加到窗口中
      3.显示窗口
    • 如果没有指定的Main的话,就需要手动的去创建窗口

      - 1.创建窗口
      - 2.设置窗口的根控制器
      - 3.显示窗口
      - 4.注意:从ios9之后,如果一个应用程序有多个窗口时,控制器就把状态栏给隐藏,解决办法:把状态栏交给应用程序管理
      // 1.创建窗口
      self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
      
      // 2.设置窗口的根控制器
      UIViewController *vc = [[UIViewController alloc] init];
      vc.view.backgroundColor = [UIColor yellowColor];
      self.window.rootViewController = vc;
      
      // 3.显示窗口
      [self.window makeKeyAndVisible];

      注:[self.window makeKeyAndVisible]的底层实现:

      1.让窗口成为显示状态
      窗口默认是隐藏的.hidden = yes;
      底层做的事件就是:self.window.hidden = NO;
      2.把控制器的view添加到窗口上面
      [self.window addSubView:rootVC.view]; // rootVC根控制器
      3.把当前窗口设置成应用程序的主窗口
      application.keyWindow 获得应用程序的主窗口
    • 添加键盘(ios中键盘和状态栏都是窗口)

      // 创建一个UITextField,用来点击启动键盘
      UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
      // 让UITextField成为第一响应者
      [tf becomeFirstResponder];
      // 控制器添加UITextField
      [vc.view addSubview:tf]; // vc为当前根控制器
    • UIWindow中的层级

      设置window的层级.UIWindowLevelNormal它是⼀一个CGFloat类型.self.window.windowLevel = UIWindowLevelNormalUIWindowLevelNormal < UIWindowLevelStatusBar < UIWindowLevelAlert

  • 相关阅读:
    基于Oracle的Mybatis 批量插入
    java.lang.ClassCastException: com.sun.proxy.$Proxy32 cannot be cast to com.bkc.bpmp.core.cache.MemcachedManager
    理解 Mybatis的分页插件 PageHelper
    手机注册获取验证码的PHP代码
    php分页代码简单实现
    PHP简单漂亮的分页类
    PHP实现各种经典算法
    Vue 入门指南 JS
    php 经典的算法题你懂的
    WebService 之 WSDL文件 讲解
  • 原文地址:https://www.cnblogs.com/LongLJ/p/5008425.html
Copyright © 2011-2022 走看看