OS開發UI篇 UIWindow簡單介紹

2022-09-03 18:00:10 字數 2683 閱讀 9882

一、簡單介紹

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.主視窗和次視窗

//

讓視窗成為主視窗,並且顯示出來。有這個方法,才能把資訊顯示到螢幕上。

[self.window makekeyandvisible];

因為window有makekeyandvisible這個方法,可以讓這個window憑空的顯示出來,而其他的view沒有這個方法,所以它只能依賴於window,window顯示出來後,view才依附在window上顯示出來。

//

讓uiwindow成為主視窗,但不顯示。

[self.window makekeywindow]

2.獲取uiwindow

(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 上,於是控制器的 ...