iOS --- 理解UIWindow及其常见使用场景

作者: icetime17 | 来源:发表于2016-04-04 20:57 被阅读1589次

UIWindow继承自UIView, 用来管理和协调各种视图. 提供一个区域来显示视图, 将事件event分发给视图.
每个iOS应用必须包含一个window用于展示APP的交互页面. 且一个APP通常只有一个UIWindow, 包含了APP的可视内容.
即使有多个, 也只有一个UIWindow可以接收用户的touch事件.

The two principal functions of a window are to provide an area for displaying its views and to distribute events to the views

所以, UIWindow的主要作用有两个:

  1. 提供一个显示view的区域.
  2. 将事件分发给view(如touch事件, 横竖屏的变化等)

keyWindow

The key window is the one that is designated to receive keyboard and other non-touch related events. Only one window at a time may be the key window.

通常在AppDelegate中的didFinishLaunchingWithOptions方法中, 执行如下代码设置keyWindow:

let story = UIStoryboard(name: "Main", bundle: nil)
let rootViewController: RootViewController = story.instantiateViewControllerWithIdentifier("RootViewController")
let navigationController = UINavigationController(rootViewController: rootViewController)
let window = UIWindow(frame: UIScreen.mainScreen().bounds)
window.rootViewController = navigationController
window.makeKeyAndVisible() // 调用makeKeyAndVisible使该窗口为keyWindow并可见

获取keyWindow的方式:

UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
UIViewController *rootViewController = keyWindow.rootViewController;

windowLevel

UIWindow有一个windowLevel属性, 表示屏幕上的显示优先级, 通常会有三个值, 优先级顺序为:
UIWindowLevelAlert > UIWindowLevelStatusBar > UIWindowLevelNormal.

例如, 当有Alert出现的时候, 其他地方都点不了, 说明其优先级最高. 而状态栏次之.
通过这样,也可以设置某些显示的优先级(是alert还是statusBar)。

使用场景

UIWindow的使用场景:
如有道云笔记的密码保护功能. 当用户从任何界面按Home键退出, 然后过一会儿再从后台切换回来, 显示一个密码输入界面.
因该密码输入界面可能从任何界面弹出, 且要覆盖在所有界面的最上层, 所以使用UIWindow比较合适.

使用时, 通过makeKeyAndVisible和resignKeyWindow两个方法来控制keyWindow.
简单的Demo请参考:
DemoKeyWindow

相关文章

  • iOS --- 理解UIWindow及其常见使用场景

    UIWindow继承自UIView, 用来管理和协调各种视图. 提供一个区域来显示视图, 将事件event分发给视...

  • 理解 UIWindow、UIWindowLevel及其使用场景

    1、简单介绍 UIWindow继承自UIView,UIWindow是一种特殊的UIView,通常在一个app中只会...

  • UIWindow的基本使用

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

  • iOS关于UIWindow

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

  • iOS --- 理解Runtime机制及其使用场景

    Runtime是iOS中比较难以理解, 但又非常强大的技术. The Objective-C language d...

  • iOS UIWindow及其应用

    UIWindow简介 之前一直没理解AppDelegate里面的强引用UIWindow是什么东西,后来慢慢了解了U...

  • UIWindow笔记

    在iOS App中,UIWindow是最顶层的界面内容,我们使用UIWindow和UIView来呈现界面。UIWi...

  • iOS开发进阶 第十二章 UIWindow

    在iOS应用中,我们使用UIWindow和UIView来呈现界面。UIWindow并不包含任何默认的内容,但是当他...

  • UIView, CALayer

    简介 在iOS中使用UIWindow和UIView在屏幕上显示APP的内容。UIWindow为APP提供了一个底层...

  • UIWindow

    UIWindow基本使用 ios程序启动完毕后,创建的第一个视图控件就是UIWindow 如果指定了main,系统...

网友评论

本文标题:iOS --- 理解UIWindow及其常见使用场景

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