2015-12-22 115 views
3

我正在構建一個iOS 9應用程序,其中包含horizontal頁面導航,需要在某些頁面上顯示狀態欄,並將其隱藏在其他頁面上。我想使用淡入/淡出動畫,所以我必須設置發佈時無法隱藏狀態欄

View controller-based status bar appearance = NO

和更新狀態欄是這樣的:

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

網頁間導航時,此程序完美的作品,但我在啓動時無法擺脫狀態欄。

我已經嘗試設置:Status bar is initially hidden = YES

添加此到NavigationControllers viewDidLoad:

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
self.statusBarHidden = YES; 
[self setNeedsStatusBarAppearanceUpdate]; 

添加這AppDelegates didFinishLaunchingWithOptions:

application.statusBarHidden = YES; 

添加此初始頁面視圖控制器:

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

檢查在中普通「狀態欄」中的「隱藏狀態欄」選項>部署信息

和設置在鏈接故事板元素

但狀態欄中的「無」仍然顯示出來發射。如何在不改變View controller-based status bar appearance的值的情況下襬脫啓動時的狀態欄?

+0

爲什麼你不想茶基於視圖控制器的狀態欄外觀的nge值? –

+0

我認爲那必須是爲了動畫狀態欄,當它被設置爲NO時,我無法做到這一點 – Cbas

回答

0

原來我在做的事是正確的,但是有一個掩埋在繼承代碼中的錯誤[[UIApplication sharedApplication] setStatusBarHidden:NO];。我grepped,但忽視了線......

(使用git grep StatusBar找到一個混帳回購協議是變異狀態欄的代碼行)

此外,唯一需要的代碼是:

View controller-based status bar appearance = NO (在plist中)

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

隨時隨地狀態欄需要更新(通常在viewWillAppear

1
changing plist file : 

set Status bar is initially hidden = YES 

add row: View controller-based status bar appearance = NO 

enter image description here

+0

這些值已經設置 – Cbas

+0

很棒!謝謝 –

+0

Wc! @GiladBrunfman – Nikunj5294

4

只需選中項目的隱藏狀態欄,設置如圖。

  1. 項目設置 - 用於啓動應用程序時隱藏狀態欄。

Hide Status bar

  • 下面添加的viewController中爲其中需要隱藏。
  • - (BOOL)prefersStatusBarHidden { return YES; }

    /------ UPDATE -----/

    1. 隨着隱藏狀態欄的蜱 Without status bar

    2. 如果沒有隱藏狀態剔bar With status bar

    /------動畫狀態欄-----/

    在plist中。

    View controller-based status bar appearance = NO 
    

    然後在viewWillAppear方法中。

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

    我已經嘗試過這兩種方法(忘記提到第一個),兩者都沒有影響,在一起或分開 – Cbas

    +0

    @Cbas我只是試圖在演示中粘貼代碼給你。爲了驗證,請在** didFinishLaunchingWithOptions **方法中設置一個斷點,並返回yes並檢查模擬器的狀態欄。 - 只做項目設置勾選選項並驗證 – nikhil84

    +0

    屏幕在該行爲黑色。我認爲你必須編輯你的plist重新創建我的情況 – Cbas

    0

    爲了實現你在找什麼,你需要在app.plist文件中設置:

    Status bar is initially hiddenYES

    View controller-based status bar appearance在每個視圖控制器NO

    然後 it

    [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
    

    隱藏它:

    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    
    +0

    如果我把'[[ UIApplication sharedApplication] setStatusBarHidden:YES];'在我的視圖控制器的viewDidLoad中,它沒有任何效果,狀態欄顯示出來。plist的值已經設置 – Cbas

    +0

    你是否正在重寫' - (BOOL)prefersStatusBarHidden; 「我的猜測是可能有這種行爲。 –

    +0

    是的我重寫,設置爲YES – Cbas

    0

    轉到Targets->常規 - >部署信息:並根據該選擇隱藏狀態欄選項。

    +0

    哪裏是目標? – Cbas

    +0

    在Xcode按cmd + 1,然後你會看到Proejcts和Targets選項卡,所以選擇目標 –

    +0

    好吧我已經嘗試過 – Cbas