Window的作用
在iOS中,一个window(也就是一个UIWindow对象)主要有这样几个作用:
1.展示app的可视内容;
2.将事件分发给视图以及其他对象;
3.和app的view controller一起处理屏幕旋转。
其实在大多数情况下,第三方程序员不用做任何事情,window就能完成这些工作。所以很多时候,只有当这个app需要支持另一个外设的屏幕的时候,程序员才会对window进行操作。
知识点
1.存放所有view的地方
2.UIWindow、ViewController层次逻辑图

3.四大对象关系图

4.主窗口和次窗口:只有主窗口可以接收键盘以及非触摸类的消息事件
5.直接将视图加到window上也可以开发,但会带来一些问题。
1)视图的监听事件可能由于控制器被销毁而出现问题。
2)旋转事件的传递UIApplication->UIWindows->viewController->view,如果直接添加视图,没有VC,那么视图无法旋转。
6.windows创建过程
1)有storyboard,
- 先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application,
- 创建代理,并且把代理设置给application,
- 根据项目配置文件info.plist里面的storyboard的name,找到对应的storyboard
- 接下来创建一个window
- 之后创建它的初始化控制器(就是箭头所指向的控制器),自动把该控制器设置为UIWindow的根控制器,接下来再将window显示出来,即看到了运行后显示的界面。

2)无storyboard,
- 先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application,
- 创建代理,并且把代理设置给application,
- 开启一个事件循环,当程序加载完毕,他会调用代理的didFinishLaunchingWithOptions:方法。
- 在该方法中,会创建一个Window,然后创建一个控制器,并把该控制器设置为UIWindow的根控制器,接下来再将window显示出来,即看到了运行后显示的界面。
6.创建代码
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [[UIViewController alloc] init];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
声明
此博文整理自网络,部分内容可能直接摘抄原文内容,本人作为学习笔记使用。如若对读者有用,可自由收藏,但请不要用于任何的商业用途。
如果您的作品被摘抄并且不愿意在此博客被公开请联系本人删除,联系邮箱limaofuyuanzhang@qq.com。