UIWindow是一種特殊的UIView诗眨,通常在一個(gè)app中通常都會(huì)有一個(gè)UIWindow.
iOS程序啟動(dòng)完畢后嚣崭,創(chuàng)建的第一個(gè)視圖控件就是UIWindow;
接著創(chuàng)建控制器的view.
最后將控制器的view添加到UIWindow上
于是控制器的view就顯示在屏幕上了
一個(gè)iOS程序之所以能顯示到屏幕上,完全是因?yàn)樗蠻IWindow
也就說演侯,沒有UIWindow,就看不見任何UI界面
Snip20150831_13.png
Snip20150831_14.png
添加UIView到UIWindow中兩種常見方式:
// 直接將view添加到UIWindow中,但并不會(huì)理會(huì)view對(duì)應(yīng)的UIViewController- (void)addSubview:(UIView*)view;// 自動(dòng)將rootViewController的view添加到UIWindow中翁锡,負(fù)責(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)用中的任何一個(gè)UIView對(duì)象(平時(shí)輸入文字彈出的鍵盤,就處在一個(gè)新的UIWindow中)[UIApplicationsharedApplication].windows// 用來接收鍵盤以及非觸摸類的消息事件的UIWindow,而且程序中每個(gè)時(shí)刻只能有一個(gè)UIWindow是keyWindow.? 如果某個(gè)UIWindow內(nèi)部的文本框不能輸入文字,? 可能是因?yàn)檫@個(gè)UIWindow不是keyWindow.[UIApplicationsharedApplication].keyWindow// 獲得某個(gè)UIView所在的UIWindowview.window
四大對(duì)象關(guān)系圖
Snip20150831_15.png