2010-06-04 28 views
2
CGRect fullWindowRect = [UIScreen mainScreen].applicationFrame; 

是獲取可用矩形的簡單方法,減去狀態欄。隨着iPad/iPhone在這些基本系統指標中日益分化,我想在UINavigationBar到位時停止減去44以獲得屏幕高度。對於定位東西很重要,以便它們從屏幕底部偏離其自身的高度,即與屏幕底部對齊。UINavigationBar和可用屏幕區域的計算

什麼是神奇的功能,當然你不是應該爲兩個(或更多)可能的導航欄高度製作常量,並記住何時應用它們?我在這裏或其他地方找不到答案,但我經常發現「44」。

回答

12
CGFloat navHeight = self.navigationController.navigationBarHidden ? 0 : 
    self.navigationController.navigationBar.frame.size.height; 
+0

謝謝 - 我實際上已經試過類似的東西(和失敗),但現在意識到這是正確的做法,只有在我實際創建它之前,我無法獲得導航欄的高度:# – 2010-06-04 22:50:10

3

切勿使用諸如'44'之類的硬編碼,因爲它不符合'兼容性規則'。沒人知道下一代的iPhone會有什麼樣的'狀態欄'。

除了計算狀態欄或導航欄的確切高度,您可以使用類似:

[[UIScreen mainScreen] bounds]; 
[[UIScreen mainScreen] applicationFrame]; 
1

我認爲你正在努力尋找的可用幀時的導航欄是存在的。我只是轉移applicationFrame的起源下來,並通過減少同樣的高度

CGRect appFrame = [[UIScreen mainScreen] applicationFrame];  
appFrame.origin.y += self.navigationController.navigationBar.frame.size.height; 
appFrame.size.height -= self.navigationController.navigationBar.frame.size.height; 

就像一個魅力