2012-02-14 24 views
3

我只想啓用/禁用每視圖控制器(一些人認爲全屏幕,有些沒有)的狀態欄啓用iPhone(20 PX發行)

我一直按次/禁用狀態欄。多次通過所有相關狀態欄20個像素問題後,但問題仍然存在,特別是在iOS5.0(一些技巧的工作在舊的iOS版本):

這是問題的定義:

  • 我用[[UIApplication sharedApplication] setStatusBarHidden:YES]隱藏狀態欄

  • ,我總是有着20像素高度的白色空白區域,如果我這樣做

  • 我嘗試啓用/禁用導航酒吧強制佈局,這並不適用於iOS 5:

    [self.navigationController setNavigationBarHidden:NO animated:NO]; 
    [self.navigationController setNavigationBarHidden:YES animated:NO]; 
    
  • 我已經嘗試手動重置視圖框的大小,沒有任何變化

    self.view.frame=CGRectMake(0, 0, 320, 480);

  • 我試圖手動更改導航容器視圖:

    self.navigationController.frame=CGRectMake(0, 0, 320, 480);

  • 所有視圖當然是480像素高度

+0

讓您擁有一個尖@AalokParikh? – tomsoft 2012-08-08 17:59:18

+0

我用它來顯示和隱藏狀態欄'[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];'同時也根據狀態欄的隱藏狀態設計視圖。如果狀態欄是隱藏的,我設計我的視圖中沒有狀態欄。 :) – 2012-08-09 09:37:20

+0

好吧,我也試過了,但beahvior也不同,取決於iOS版本。我終於不得不完全重寫導航框架,以便100%sur來管理它... – tomsoft 2012-08-09 11:59:25

回答

1

我想,你想隱藏狀態欄和設置t他ViewControllers在全屏幕導航欄,然後在你想隱藏狀態欄使用

[self.navigationController.view setNeedsLayout]; 

其他方法使用....

[[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:NO]; 
[self wantsFullScreenLayout]; 
+0

也行不通。 :( – tomsoft 2012-02-14 17:16:31

+0

請參閱編輯我的答案 – Deepesh 2012-02-15 08:13:38

+1

請注意,'wantsFullScreenLayout'自iOs7被棄用... [link] html的#// apple_ref/OCC/instp/UIViewController中/ wantsFullScreenLayout) – goldengil 2014-03-05 17:31:13

4

使用以下方法viewWillAppear中視圖控制器到你想要顯示StatusBar。

[[UIApplication sharedApplication]setStatusBarHidden:YES]; 

聲明一個布爾變量,以指示狀態欄是否隱藏或不同時視圖中,你想隱藏狀態欄,並將其值設定爲NO視圖控制器加載。

BOOL statusBarHidden = NO; 

然後添加以下代碼視圖控制器viewWillAppear中(狀態欄被隱藏在該視圖)

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
if(statusBarHidden == NO) 
{ 
    self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, 0.0, -20.0); 
    statusBarHidden = YES; 

}