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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容