2013-10-22 89 views
3

我需要隱藏iOS7上的狀態欄。我已經嘗試設置:隱藏iOS7中的狀態欄

Status bar is initially hidden 

View controller-based status bar appearance 

到plist文件。狀態欄不會在啓動應用程序時顯示,但當我更改視圖控制器(是一個選項卡式應用程序)狀態欄出現!

我已經嘗試設置

- (BOOL)prefersStatusBarHidden 
{ 
    return YES; 
} 

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 

在視圖控制器,但沒有作品。有任何想法嗎?

預先感謝您:)

UPDATE

我部分地通過設置「查看基於控制器的狀態欄外觀」到「YES」到的info.plist並調用方法

解決問題
- (BOOL)prefersStatusBarHidden 
{ 
    return YES; 
} 

進入視圖控制器。但是現在我又遇到了另一個問題:當我啓動另一個控制器(UIImagePickerController)時,會出現狀態欄。我試圖設置[myPicker prefersStatusBarHidden];,但它似乎是隻讀的。任何人都知道解決方案

PS:UIViewControllerBasedStatusBarAppearance = NOUIViewControllerBasedStatusBarAppearance = NO都是一樣的東西..

+0

正確的解決方案:http://stackoverflow.com/a/21034908/294884 – Fattie

回答

7

該密鑰加入您的info.plist

UIViewControllerBasedStatusBarAppearance = NO 
2

UIViewControllerBasedStatusBarAppearance = YES 

在info.plist中,並在每個控制器執行器

- (BOOL)prefersStatusBarHidden { 
    return YES; // or NO 
} 

然後,無論何時您需要狀態欄外觀更新(例如,在控制器的viewDidLoad中)請致電setNeedsStatusBarAppearanceUpdate

作爲每setNeedsStatusBarAppearanceUpdate文檔:

調用此方法,如果視圖控制器的狀態欄的屬性,如隱藏/取消隱藏狀態或風格,變化。如果您在動畫塊中調用此方法,則會隨動畫塊的其餘部分一起動畫更改。

因此,例如

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [self setNeedsStatusBarAppearanceUpdate]; 

    ... 
} 

將隱藏/取消隱藏狀態欄(除了其他潛在風格變化)每當視圖控制器的看法負荷。

還可以任意設置過渡動畫的動畫塊包裝通話

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [UIView animateWithDuration:0.5 animations:^{ 
     [self setNeedsStatusBarAppearanceUpdate]; 
    }]; 

    ... 
}