iOS9下 UIWindow相关

本文所有的结论都是在iOS9的情况下。

先来看看UIWindow 的一些子类,如下图所示。

Snip20160105_9

1、目前UIWindow 的 windowLevel 的取值范围是 (0.0-10000000.0)

2、如果新建一个window,想把它变为keyWindow,这个window是局部变量的时候,会没有效果。

3、并不是执行了makeKeyAndVisible/makeKeyWindow/becomeKeyWindow 方法 ,window 就一定会变成keyWindow。比如,当系统AlertView 出现时,keyWindow是_UIAlertControllerShimPresenterWindow,这个时候keyWindow 就是不可覆盖的。

4、_UIAlertControllerShimPresenterWindow 这个系统AlertView的载体window 不在[UIApplication sharedApplication].windows 数组中。

5、当判断或设置 app的 rootViewController的时候,推荐使用[[UIApplication sharedApplication].delegate window].rootViewController 而不是[[UIApplication sharedApplication]keyWindow].rootViewController,后者偶尔会出现它并不是你想要的那个controller。

最后附上 _UIAlertControllerShimPresenterWindow的层次结构图,供大家学习研究。


Snip20160105_10
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容