天天看點

UIWindow

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

四大對象關系圖

UIWindow

在加載info.plist,判斷下是否指定main,如果指定了,就會去加載StoryBoard.

1.建立一個視窗

2.加載MainStoryBoard,初始化一個控制器.

3.把初始化出來的控制器設定為窗的根控制器.讓窗顯示到螢幕上.