2012-10-03 16 views
5

在iOS 5.1.1中,我發現如果我創建了我的UIWindow(我厭倦了IB),並將其框架設置爲[UIScreen mainScreen] .bounds,窗口在狀態欄下顯示。但是,如果我做同樣的事情是iOS 6,它會出現在狀態欄正下方的正確位置。iOS:以錯誤的位置編程創建UIWindow結果

CGRect r = [[UIScreen mainScreen] bounds]; 
self.window = [[UIWindow alloc] initWithFrame: r]; 
self.detailViewController = [[DetailViewController alloc] init]; 
self.window.rootViewController = self.detailViewController; 
[self.window addSubview: detailViewController.view]; 
[self.window makeKeyAndVisible]; 

然而,如果我插入r.origin.y + = 20,移動中的iOS 5.1.1狀態欄下的窗口,這並沒有解決問題,事情只會變得怪異。

以編程方式創建UIWindow的正確方法是什麼? 謝謝。

+0

如果你回到IB,我相信你會有更少的問題。我最近試圖用代碼修復佈局問題,並花了數小時。我得到了它的工作,但後來嘗試只用IB做了同樣的事情,只需點擊幾下鼠標,它就比我的手動編碼工作得更好。我已經瞭解到最好使用這些工具。否則,你會遇到難以解決的邊緣案例。 – Brennan

回答

0

我想你可能需要做:

self.window.windowLevel = UIWindowLevelStatusBar + 1; 
2

而不是[[UIScreen mainScreen] bounds]你要使用[[UIScreen mainScreen] applicationFrame]。這將是狀態欄下面的屏幕區域(如果可見)。