4

私は 2 を持っていUIViewControllersます。最初のUIViewControllerでは、たとえばViewController1UINavigationBar非表示にしています。私のアプリのテーマは black なので、 black で見えないようにwhiteUIStatusBarが必要です。白を取得するために、私はこのメソッドを で使用しています。iOS 7UINavigationBarUIStatusBariOS 7

  1. に を設定UIViewControllerBasedStatusBarAppearanceYESますplist
  2. viewDidLoad_[self setNeedsStatusBarAppearanceUpdate];
  3. 次のメソッドを追加します。

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
      return UIStatusBarStyleLightContent; 
    } 
    

ViewController1 にいるときは正常に動作します。しかし、ViewController2 に移動すると、設定した場合

self.navigationController.navigationBarHidden = NO 

私のviewDidLoad方法で。次に、上記の白のコードはUIStatusBar機能しません。UIStatusBar次のコードを使用してカスタマイズしているため、黒くなり、表示されませんUINavigationBar

self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];
self.navigationController.navigationBar.translucent = NO; 

UINavigationBarViewController1 のように非表示のままにすると、白UIStatusBarが再び表示されます。しかし、UINavigationBarが表示されると、ステータス バーが再び黒くなります。それが問題です。

ViewController1 のような白いステータスバーを取得するにはどうすればよいですか? 前もって感謝します。

4

2 に答える 2

6

これを両方のView Controllerに追加しようとしましたか

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
}
于 2014-01-06T17:11:20.793 に答える
0

plist に必要な属性が欠落している可能性があります。コントローラーベースのステータスバーの外観を NO に表示します。

編集:一般的に必要なものに対するより包括的な回答については、以前の回答に対する@caglarコメントを確認してください。

于 2014-03-27T10:09:54.740 に答える