IOS 應用UIWindow分析

作者:朱克鋒

郵箱:[email protected]

轉載請註明出處:http://blog.csdn.net/linux_zkf


和Mac OS X的應用程序有所不同,iPhone應用程序通常只有一個窗口,表示爲一個UIWindow類的實例。您的應用程序在啓動時創建這個窗口(或者從nib文件進行裝載),並往窗口中加入一或多個視圖,然後將它顯示出來。窗口顯示出來之後,您很少需要再次引用它。
在iPhone OS中,窗口對象並沒有像關閉框或標題欄這樣的視覺裝飾,用戶不能直接對其進行關閉或其它操作。所有對窗口的操作都需要通過其編程接口來實現。應用程序可以藉助窗口對象來進行事件傳遞。窗口對象會持續跟蹤當前的第一響應者對象,並在UIApplication對象提出請求時將事件傳遞它。
還有一件可能讓有經驗的Mac OS X開發者覺得奇怪的事是UIWindow類的繼承關係。在Mac OS X中,NSWindow的父類是NSResponder;而在iPhone OS中,UIWindow的父類是UIView。因此,窗口在iPhone OS中也是一個視圖對象。不管其起源如何,您通常可以將iPhone OS上的窗口和Mac OS X的窗口同樣對待。也就是說,您通常不必直接操作UIWindow對象中與視圖有關的屬性變量。
在創建應用程序窗口時,您應該總是將其初始的邊框尺寸設置爲整個屏幕的大小。如果您的窗口是從nib文件裝載得到,Interface Builder並不允許創建比屏幕尺寸小的窗口;然而,如果您的窗口是通過編程方式創建的,則必須在創建時傳入期望的邊框矩形。除了屏幕矩形之外,沒有理由傳入其它邊框矩形。屏幕矩形可以通過UIScreen對象來取得,具體代碼如下所示:
 
UIWindow* aWindow = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    

雖然iPhone OS支持將一個窗口疊放在其它窗口的上方,但是您的應用程序永遠不應創建多個窗口。系統自身使用額外的窗口來顯示系統狀態條、重要的警告、以及位於應用程序窗口上方的其它消息。如果您希望在自己的內容上方顯示警告,可以使用UIKit提供的警告視圖,而不應創建額外的窗口。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章