UIWindow是一種特殊的UIView,通常在一個app中通常都會有一個UIWindow.
- iOS程序啟動完畢后,創(chuàng)建的第一個視圖控件就是UIWindow;
- 接著創(chuàng)建控制器的view.
- 最后將控制器的view添加到UIWindow上
- 于是控制器的view就顯示在屏幕上了
一個iOS程序之所以能顯示到屏幕上,完全是因為它有UIWindow
也就說,沒有UIWindow,就看不見任何UI界面

Snip20150831_13.png

Snip20150831_14.png
添加UIView到UIWindow中兩種常見方式:
// 直接將view添加到UIWindow中,但并不會理會view對應(yīng)的UIViewController
- (void)addSubview:(UIView *)view;
// 自動將rootViewController的view添加到UIWindow中,負責(zé)管理rootViewController的生命周期
@property(nonatomic,retain) UIViewController *rootViewController;
常用方法
// 讓當(dāng)前UIWindow變成keyWindow(主窗口)
- (void)makeKeyWindow;
// 讓當(dāng)前UIWindow變成keyWindow,并顯示出來
- (void)makeKeyAndVisible;
UIWindow的獲得
// 在本應(yīng)用中打開的UIWindow列表,這樣就可以接觸應(yīng)用中的任何一個UIView對象
(平時輸入文字彈出的鍵盤,就處在一個新的UIWindow中)
[UIApplication sharedApplication].windows
// 用來接收鍵盤以及非觸摸類的消息事件的UIWindow,
而且程序中每個時刻只能有一個UIWindow是keyWindow.
如果某個UIWindow內(nèi)部的文本框不能輸入文字,
可能是因為這個UIWindow不是keyWindow.
[UIApplication sharedApplication].keyWindow
// 獲得某個UIView所在的UIWindow
view.window
四大對象關(guān)系圖

Snip20150831_15.png