一、簡單介紹
ios程式啟動完畢後,建立的第乙個檢視控制項就是uiwindow,接著建立控制器的view,最後將控制器的view新增到uiwindow上,於是控制器的view就顯示在螢幕上了
乙個ios程式之所以能顯示到螢幕上,完全是因為它有uiwindow。也就說,沒有uiwindow,就看不見任何ui介面
新增
先建立uiwindow,再建立控制器,建立控制器的view,然後將控制器的view新增到uiwindow上。
文件中關於該部分的解釋:
二、uiwindow的建立過程
1.簡單說明
建立乙個空的專案,就可以看到uiwindow是怎麼出來的了。在程式啟動完畢之後就會呼叫一次,建立過程如下:
2.把view新增到uiwindow
建立乙個控制器,把view新增到uiwindow上面(有兩種方式)
(1)直接將控制器的view新增到uiwindow中,並不理會它對應的控制器
[self.window addsubview:vc.view];(2)設定uiwindow的根控制器,自動將rootviewcontroller的view新增到window中,負責管理rootviewcontroller的生命週期
self.window.rootviewcontroller = vc;兩個方法的區別:
以後的開發中,建議使用(2).因為方法(1)存在一些問題,比如說控制器上面可能由按鈕,需要監聽按鈕的點選事件,如果是1,那麼按鈕的事件應該由控制器來進行管理。但控制器是乙個區域性變數,控制器此時已經不存在了,但是控制器的view還在,此時有可能會報錯。注意:方法執行完,這個控制器就已經不存在了。
問題描述1:當view發生一些事件的時候,通知控制器,但是控制器已經銷毀了,所以可能出現未知的錯誤。
3.在有storyboard的專案中,uiwindow是如何建立的?
為什麼建立乙個storyboard,沒有看到建立uiwindow的過程?
它其實是把建立uiwindow的過程給遮蔽起來了。可以把**的uiwindow的屬性的值列印出來nslog(@"window=%p", self.window);列印出來確實是有值的,說明確實建立了uiwindow.不僅建立了uiwindow,預設還建立了uiwindow對應的控制器,也可以列印進行檢視。 nslog(@"%@", self.window.rootviewcontroller);
有storyboard的專案中的建立過程:
三、如何獲取window?
1.主視窗和次視窗
//因為window有makekeyandvisible這個方法,可以讓這個window憑空的顯示出來,而其他的view沒有這個方法,所以它只能依賴於window,window顯示出來後,view才依附在window上顯示出來。讓視窗成為主視窗,並且顯示出來。有這個方法,才能把資訊顯示到螢幕上。
[self.window makekeyandvisible];
//2.獲取uiwindow讓uiwindow成為主視窗,但不顯示。
[self.window makekeywindow]
(3)view.window獲得某個uiview所在的uiwindow
四、四大物件的關係圖
五、主視窗和次視窗說明
**:
1**說明://程式啟動完畢之後就會呼叫一次
3
再建立乙個視窗(主視窗和次視窗的區別)
區域性變數,需要定義乙個window屬性來儲存變數。
window的屬性定義為strong,就是為了讓其不銷毀。
乙個應用程式只能有乙個主視窗,程式中建立了兩個window,那麼誰是主視窗?後面的視窗能覆蓋前面的視窗。
在ios7裡邊,主視窗和次視窗是沒有區別的
在ios7以前中有區別:哪個是主視窗,後面設定為主視窗會把之前設定的覆蓋掉。(只有主視窗才能響應鍵盤的輸入事件,如果不能輸入內容,可以檢視是否是顯示在主視窗上,不在主視窗上的不能響應。)
六、補充說明
在有storyboard中的建立過程:
注意這個控制器屬性面板上的「初始化控制器屬性」。
在沒有storyboard中的建立過程:
iOS開發UI篇 UIWindow簡單介紹
ios開發ui篇 uiwindow簡單介紹 一 簡單介紹 ios程式啟動完畢後,建立的第乙個檢視控制項就是uiwindow,接著建立控制器的view,最後將控制器的view新增到uiwindow上,於是控制器的view就顯示在螢幕上了 乙個ios程式之所以能顯示到螢幕上,完全是因為它有uiwindo...
OS開發UI篇 核心動畫 基礎動畫
文頂頂 ios開發ui篇 核心動畫 基礎動畫 一 簡單介紹 capropertyanimation的子類 屬性解析 fromvalue keypath相應屬性的初始值 tovalue keypath相應屬性的結束值 隨著動畫的進行,在長度為duration的持續時間內,keypath相應屬性的值從f...
Ui 一一 UIWindow基本介紹
uiwindow 1.uiwindow是什麼?uiwindow 是一種特殊的 uiview 通常在乙個 中至少有乙個 uiwindow ios程式啟動完畢後,建立的第乙個檢視控制項就是 uiwindow 接著建立控制器的 view,最後將控制器的 view 新增到uiwindow 上,於是控制器的 ...