UIWindow

作者: Wws | 来源:发表于2015-10-13 01:16 被阅读176次

# UIWindow

UIwindow在官方文档中是继承自UIView的. 但是,在实际显示上,是绝对的首席"view".

*通常在一个app中只会有一个UIWindow

ios程序启动完毕后,创建的第一个视图控件就是UIwindow,接着创建控制器的view,然后再将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了.

*一个程序之所以能显示在屏幕上,完全是因为有UIWin,也就是说, 没有UIwindow就看不到UI界面.

先创建UIWindow,再创建控制器,创建控制器的view,然后再将view添加在UIWindow上.

# UIWindow的创建过程

* 当程序启动进入UIApplicationMain函数后,会根据第三个参数创  建一个UIapplication对象,随后第四个对象创建一个它的代理,进入事件循环.

* 进入到代理的 didFinishLaunching方法

-  两种将view添加到uiview的方法

-  1. 创建一个控制器,直接addsubviews方法将view添加到UIwin上,成为它的子控件

- 2 . 创建一个控制器,通过

- ```objc

self.window.addRootController = vc```添加

![](/Users/ws/Desktop/

两个方法的区别:

以后的开发中,建议使用(2).因为方法(1)存在一些问题,比如说控制器上面可能由按钮,需要监听按钮的点击事件,如果是1,那么按钮的事件应该由控制器来进行管理。但控制器是一个局部变量,控制器此时已经不存在了,但是控制器的view还在,此时有可能会报错。注意:方法执行完,这个控制器就已经不存在了。

问题描述1:当view发生一些事件的时候,通知控制器,但是控制器已经销毁了,所以可能出现未知的错误。

问题描述2:添加一个开关按钮,让屏幕360度旋转(两者的效果不一样)。当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给uiwindow,uiwindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转

UIapplication->uiwindow->根控制器(第一种方式没有根控制器,所以不能跟着旋转)。

####提示:不通过控制器的view也可以做开发,但是在实际开发中,不要这么做,不要直接把view添加到UIWindow上面去。因为,难以管理。

# 在storyboard中UIWindow是怎样创建的

***为什么创建一个storyboard,没有看到创建uiwindow的过程?

**

UIWindow的创建过程被屏蔽起来,通过在Appdelegate中打印可获得UIWindow的地址,通知也获得了一个控制器的地址,默认成它的root控制器

# 如何获取window

```objc

[self.window makekeyadndvisible];

```

UIWindowLevelAlert >UIWindowLevelStatus>UIWindowLevelnomal

键盘的弹出

相关文章

  • UIWindow

    目录:1、UIWindow简介2、UIWindow的创建3、获取UIWindow 1、UIWindow简介 UIW...

  • UIWindow 原理与巧妙使用 makeKeyAndVisib

    - UIWindow 简介- UIWindow 概述- 我们可以使用 UIWindow 来作什么?- makeKe...

  • UIWindow、UIView、CALayer

    UIWindow的windowLevel属性 UIWindow简单介绍 UIWindow详解及踩坑 UIWindo...

  • UIWindow讲解

    1.UIWindow & UIWindowLevel 一、简单介绍UIWindow是什么? UIWindow是一种...

  • iOS开发之UIWindow的使用

    一、UIWindow简介 UIWindow是最顶级的界面容器。UIWindow继承自UIView。 UIWindo...

  • iOS 开发- UI篇-UIWindow介绍

    UIWindow 简单介绍原文链接? iOS开发UI篇—UIWindow简单介绍 一、简单介绍 UIWindow是...

  • iOS --- UI 简单总结

    代码创建UIWindow对象 Xcode7之后使用代码创建UIWindow对象: //创建UIWindow对象 s...

  • iOS关于UIWindow

    UIWindow简介: 在iOS App中,UIWindow是最顶层的界面内容,我们使用UIWindow和UIVi...

  • UIWindow 知识梳理

    UIWindow简介 在iOS开发中,UIWindow和UIView一样都是用来呈现界面的。UIWindow并不包...

  • UIWindow的基本使用

    二、使用UIWindow 1、简介在iOS App中,UIWindow是最顶层的界面内容,我们使用UIWindow...

网友评论

      本文标题:UIWindow

      本文链接:https://www.haomeiwen.com/subject/ppjocttx.html