UIWindow是一種特殊的UIView,通常在一個app中至少有一個UIWindow
iOS程式啟動完畢後,建立的第一個視圖控件就是UIWindow,接着建立控制器的view,最後将控制器的view添加到UIWindow上,于是控制器的view就顯示在螢幕上了
一個iOS程式之是以能顯示到螢幕上,完全是因為它有UIWindow
也就說,沒有UIWindow,就看不見任何UI界面
添加UIView到UIWindow中兩種常見方式:
- (void)addSubview:(UIView *)view;
直接将view添加到UIWindow中,但并不會理會view對應的UIViewController
@property(nonatomic,retain) UIViewController *rootViewController;
自動将rootViewController的view添加到UIWindow中,負責管理rootViewController的生命周期
常用方法
- (void)makeKeyWindow;
讓目前UIWindow變成keyWindow(主視窗)
- (void)makeKeyAndVisible;
讓目前UIWindow變成keyWindow,并顯示出來
UIWindow的獲得
[UIApplication sharedApplication].windows
在本應用中打開的UIWindow清單,這樣就可以接觸應用中的任何一個UIView對象
(平時輸入文字彈出的鍵盤,就處在一個新的UIWindow中)
[UIApplication sharedApplication].keyWindow
用來接收鍵盤以及非觸摸類的消息事件的UIWindow,而且程式中每個時刻隻能有一個UIWindow是keyWindow。如果某個UIWindow内部的文本框不能輸入文字,可能是因為這個UIWindow不是keyWindow
view.window
獲得某個UIView所在的UIWindow
四大對象關系圖
在加載info.plist,判斷下是否指定main,如果指定了,就會去加載StoryBoard.
1.建立一個視窗
2.加載MainStoryBoard,初始化一個控制器.
3.把初始化出來的控制器設定為窗的根控制器.讓窗顯示到螢幕上.