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

转载于:https://www.cnblogs.com/LongLJ/p/5008425.html

多控制器之UIWindow相关推荐

  1. Proteus模拟STM32F103R6微控制器之串口通信USART的方法

    Proteus模拟STM32F103R6微控制器之串口通信USART的方法,实验环境如下: 模拟软件:Proteus 8.11 SP0 开发环境:Keil MDK 5.33 参考资料:ST公司官方参考 ...

  2. Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作

    前面对SD卡控制器有了一个基本的介绍.其实SD控制器层更过的意义是为core层提供一种操作SD卡硬件的一种方法,当然不同的控制器对硬件控制的方法不尽相同,但是他们最终都能像core层提交一个统一的封装 ...

  3. PID控制器改进笔记之六:改进PID控制器之参数设定

      前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器.这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提 ...

  4. PID控制器改进笔记之五:改进PID控制器之串级设定

    前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器.这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提高性 ...

  5. PID控制器改进笔记之四:改进PID控制器之设定值响应

    前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器.这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提高性 ...

  6. PID控制器改进笔记之三:改进PID控制器之正反作用

    前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器.这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提高性 ...

  7. 3.1 控制器之ReplicaSet/ReplicationController

    文章目录 ReplicaSet使用 1.创建ReplicaSet 2.删除一个pod 3.修改pod标签 4.标签选择器 4.修改ReplicaSet标签选择器 5.水平缩放pod 6.删除Repli ...

  8. I2C接口控制器之协议解析

    I2C总线使用多主从架构,一般在小数据量场合使用,传输距离短. I2C协议解析 接口一共需要两条总线路,即SCL(串行时钟线).SDA(串行数据线),I2C总线式半双工的,所以任意时刻只能有一个主机, ...

  9. Kubernetes控制器之Deployment

    Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用.只需要在Deployme ...

最新文章

  1. 现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)...
  2. 每天学一点儿shell:Linux中crontab的用法
  3. Javascript 逗号“,”引发的血案
  4. 边缘提取算子检测比较
  5. SAP Event Mesh 简介
  6. Lucene的一些基本使用方法和概念 (JAVA)
  7. 云在物联网中的惊人优势 | 技术头条
  8. c语言玫瑰花图形程序,一个玫瑰花的程序
  9. laravel 图片
  10. 用虚拟串口进行串口调试
  11. python svm向量_支持向量机(SVM)及其Python实现
  12. oracle sql 正则表达式
  13. Java将多张图片合并保存到同一页PDF中
  14. 电脑翻页时钟屏保Fliqlo
  15. 记腾讯互娱网站布局(2)
  16. 超宽带雷达P440?雷达的快时间慢时间是什么意思?
  17. 安装RSF自动化环境
  18. windows开机之后我做的事情
  19. matlab计算程序运行时间
  20. IPv6基础介绍及常用命令盘点

热门文章

  1. Hadoop群集设置
  2. 用Qt写软件系列一:QCacheViewer(浏览器缓存查看器)
  3. 全屏幕文本编辑器___Q10的设置:
  4. Eclipse Tips(2):代码颜色设置
  5. hive linux进程数,控制Hive MAP个数详解
  6. zkcli远程连接_ZooKeeper客户端 zkCli.sh 节点的增删改查
  7. asp.net C#绘制太极图
  8. ubuntu12.10安装android编译环境
  9. 输入用户名和密码登入到服务器,却显示指定的网络密码不正确,输入了好几次都是这样,这是怎么回事? 用户名和密码没问题 ,一直用的好好地今天就不行了...
  10. 洛谷P2568 GCD(莫比乌斯反演)