多控制器之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 = UIWindowLevelNormal
UIWindowLevelNormal
<UIWindowLevelStatusBar
<UIWindowLevelAlert
转载于:https://www.cnblogs.com/LongLJ/p/5008425.html
多控制器之UIWindow相关推荐
- Proteus模拟STM32F103R6微控制器之串口通信USART的方法
Proteus模拟STM32F103R6微控制器之串口通信USART的方法,实验环境如下: 模拟软件:Proteus 8.11 SP0 开发环境:Keil MDK 5.33 参考资料:ST公司官方参考 ...
- Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作
前面对SD卡控制器有了一个基本的介绍.其实SD控制器层更过的意义是为core层提供一种操作SD卡硬件的一种方法,当然不同的控制器对硬件控制的方法不尽相同,但是他们最终都能像core层提交一个统一的封装 ...
- PID控制器改进笔记之六:改进PID控制器之参数设定
前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器.这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提 ...
- PID控制器改进笔记之五:改进PID控制器之串级设定
前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器.这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提高性 ...
- PID控制器改进笔记之四:改进PID控制器之设定值响应
前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器.这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提高性 ...
- PID控制器改进笔记之三:改进PID控制器之正反作用
前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器.这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提高性 ...
- 3.1 控制器之ReplicaSet/ReplicationController
文章目录 ReplicaSet使用 1.创建ReplicaSet 2.删除一个pod 3.修改pod标签 4.标签选择器 4.修改ReplicaSet标签选择器 5.水平缩放pod 6.删除Repli ...
- I2C接口控制器之协议解析
I2C总线使用多主从架构,一般在小数据量场合使用,传输距离短. I2C协议解析 接口一共需要两条总线路,即SCL(串行时钟线).SDA(串行数据线),I2C总线式半双工的,所以任意时刻只能有一个主机, ...
- Kubernetes控制器之Deployment
Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用.只需要在Deployme ...
最新文章
- 现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)...
- 每天学一点儿shell:Linux中crontab的用法
- Javascript 逗号“,”引发的血案
- 边缘提取算子检测比较
- SAP Event Mesh 简介
- Lucene的一些基本使用方法和概念 (JAVA)
- 云在物联网中的惊人优势 | 技术头条
- c语言玫瑰花图形程序,一个玫瑰花的程序
- laravel 图片
- 用虚拟串口进行串口调试
- python svm向量_支持向量机(SVM)及其Python实现
- oracle sql 正则表达式
- Java将多张图片合并保存到同一页PDF中
- 电脑翻页时钟屏保Fliqlo
- 记腾讯互娱网站布局(2)
- 超宽带雷达P440?雷达的快时间慢时间是什么意思?
- 安装RSF自动化环境
- windows开机之后我做的事情
- matlab计算程序运行时间
- IPv6基础介绍及常用命令盘点
热门文章
- Hadoop群集设置
- 用Qt写软件系列一:QCacheViewer(浏览器缓存查看器)
- 全屏幕文本编辑器___Q10的设置:
- Eclipse Tips(2):代码颜色设置
- hive linux进程数,控制Hive MAP个数详解
- zkcli远程连接_ZooKeeper客户端 zkCli.sh 节点的增删改查
- asp.net C#绘制太极图
- ubuntu12.10安装android编译环境
- 输入用户名和密码登入到服务器,却显示指定的网络密码不正确,输入了好几次都是这样,这是怎么回事? 用户名和密码没问题 ,一直用的好好地今天就不行了...
- 洛谷P2568 GCD(莫比乌斯反演)