🔏
iOS
  • 前言
  • View编程参考
    • View/Window架构
    • Window
    • View
    • Animations
  • ViewController编程参考
    • 定义
    • 呈现视图控制器
  • UIKit
    • 关于应用开发
    • 保护用户隐私
    • 应用和环境
      • 应用声明周期
      • 应用启动
      • UIApplication
      • UIApplicationDelegate
    • Windows and Screens
      • Window
      • Scene
      • Screen
    • 视图和控制
      • UIView
Powered by GitBook
On this page
  • 概述
  • 理解按键交互

Was this helpful?

  1. UIKit
  2. Windows and Screens

Window

用户界面的背景并且分发事件到UIView对象

概述

windows同view controller一起处理消息并且执行用户操作的相关任务。UIKit处理很多页面相关的操作,结合其他对象实现应用行为。

当需要做如下工作的时候使用window:

  • 提供一个主window显示应用内容

  • 创建额外的window显示额外的内容

    一般来说,xcode提供应用主window。新版iOS项目使用storyboard定义应用界面。storyboard需要一个window属性,配置在xcode默认提供的app delegate对象上。如果你的应用不用storyboard,那么需要自己创建一个。

大多数应用需要一个window用于在设备的主屏幕上显示应用内容。 虽然你能创建其他的window在设备主屏幕上,额外的window通常用于在其他屏幕上显示内容。

你也可以用UIWindow对象处理其他任务:

  • 设置window的z轴,影响相对于其他window的遮挡层级关系

  • 显示window并且获取键盘焦点

  • window坐标转换

  • 改变window的root view controller

  • 改变显示window的screen

window自身无法显示,但是window通过window的root view controller控制view。在storyboard中配置root view controller,给你的接口增加适当的view。

很少需要创建UIWindow子类。需要通过window实现的一些操作一般来说是用view controller来实现会更容易一些。偶尔可能想重写becomeKey或者resignKey方法来实现自定义的行为以处理window按键状态变化。

理解按键交互

由于触摸事件分发window,内容包括发生的位置。不包含坐标信息的事件发送到key windows。同一时间只有一个window是key window,可以使用window的isKeyWindow属性来判断他的状态,大部分时间,主window是key window,但是UIKit可能指定一个不同window。

如果需要知道哪个window是key window可以监听didBecomeKeyNotification和didResignKeyNotification通知。当key window发生改变的时候系统发出通知。调用类方法可以强制设置window为key window。

PreviousWindows and ScreensNextScene

Last updated 4 years ago

Was this helpful?