你的位置:首页 > 操作系统

[操作系统]UIWindow的那些事


UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上响应触摸事件的对象;

一、UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。UIWindow在程序中主要起到三个作用:

  1、作为容器,包含app所要显示的所有视图

  2、传递触摸消息到程序中view和其他对象

  3、与UIViewController协同工作,方便完成设备方向旋转的支持

二、通常我们可以采取两种方法将view添加到UIWindow中:

  1、addSubview

  直接将view通过addSubview方式添加到window中,程序负责维护view的生命周期以及刷新,但是并不会为去理会view对应的ViewController,因此采用这种方法将view添加到window以后,我们还要保持view对应的ViewController的有效性,不能过早释放。

  2、rootViewController

  rootViewController时UIWindow的一个遍历方法,通过设置该属性为要添加view对应的ViewController,UIWindow将会自动将其view添加到当前window中,同时负责ViewController和view的生命周期的维护,防止其过早释放

 

主窗口(key window)接受特定事件

  一个窗口当前能接受键盘和非触摸事件时,便被认为是主窗口。而触摸事件则被投递到触摸发生的窗口,没有相应坐标值的事件被投递到主窗口。同一时刻只有一个窗口是主窗口。

  大部分时间内,应用窗口是主窗口。由于iOS使用单独的窗口来显示警告视图(alert view)和输入附件视图(input accessory view),这些窗口也可以成为主窗口。例如,当一个讲稿视图或者输入附件视图有一个文本框,而用户当前正在这个文本框中输入,那么包含此输入视图的窗口便是主窗口。

  绝大多数应用窗口处在同一等级

  当你为应用创建一个新窗口时,UIVindow类自动赋给它一个等级,称为正常窗口等级(normal window level),这个等级对显示应用相关内容的窗口是合适的。这个等级,可以通过windowLevel属性来设置,它代表窗口相对其他窗口在z轴所处的位置。你可以使与应用相关的窗口在其他等级显示,但这不是必须的。

  除了用于显示应用相关内容的窗口外,还有一些高等级的窗口,他们显示一些需要悬浮在应用内容之上的信息。例如系统状态栏和警告等。

具体关于keyWindow和WindowLevel的详情可以参考:http://www.cnblogs.com/smileEvday/archive/2012/11/16/UIWindow.html




深圳有哪些旅游景点好深圳有什么好玩的地方深圳自助游景点攻略大全深圳旅游需要多少钱广东深圳旅游景点那琴半岛地质海洋公园美食攻略?台山海洋公园有哪些好吃的? 那琴半岛地质海洋公园海鲜多少钱?台山海洋公园烧烤怎么收费? 那琴半岛地质海洋公园两日游多少钱?台山海洋公园吃饭方便吗? 那琴半岛地质海洋公园别墅多少钱?台山海洋公园别墅预订? 中山逍遥谷烧烤怎么收费?五桂山逍遥谷烧烤吗? 中山逍遥谷酒店价格?逍遥谷住宿方便吗? 中山逍遥谷住宿?五桂山逍遥谷酒店住宿? 中山逍遥谷旅游?逍遥谷好玩吗? 深圳西冲烧烤——烤鸡全翅怎么烤好吃? 去深圳西冲沙滩旅游的三大理由是什么? 惠州蓝田瑶族风情园一日游攻略?惠州到蓝田瑶族风情园要多久? 龙门瑶族风情园好玩吗?瑶族风情园旅游项目有哪些? 八一石花水洞门票多少钱?海南八一石花水洞旅游攻略? 初秋游苏州 行走平江路 兴隆热带植物花园好玩吗?海南兴隆热带植物花园介绍? 大东海蜡像馆门票多少钱?三亚大东海蜡像馆团购价格? Q65110A8707 Datasheet Q65110A8707 Datasheet Q65110A8735 Datasheet Q65110A8735 Datasheet Q65110A8754 Datasheet Q65110A8754 Datasheet 红海湾好玩吗 红海湾好玩吗 红海湾好玩吗 泡温泉穿泳衣 泡温泉穿泳衣 泡温泉穿泳衣 香港美食节 香港美食节 香港美食节