サーチ…


非UINavigationBarステータスバーの場合

  1. info.plistでView controller-based status bar appearanceYES
  2. UINavigationController含まれていないビューコントローラでは、このメソッドを実装します。

Objective-Cでは:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

スイフトで:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

UINavigationBarステータスバーの場合

UINavigationControllerをサブクラス化し、これらのメソッドをオーバーライドします。

Objective-Cでは:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

スイフトで:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .lightContent
}

代わりに、 UINavigationBarインスタンスでbarStyleを設定することもできます。

目的C:

// e.g. in your view controller's viewDidLoad method:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;  // this will give you a white status bar

迅速

// e.g. in your view controller's viewDidLoad method:
navigationController?.navigationBar.barStyle = .black // this will give you a white status bar

UIBarStyleオプションはdefaultblackblackOpaqueblackTranslucentです。後者の3つはすべて白いテキストのステータスバーを表示し、最後の2つはバーの不透明度を指定します。

注:ナビゲーションバーの外観は、好きなように変更できます。

ViewControllerのコードを変更できない場合

あなたが間違ったステータスバーの色を持つ(例えば)AwesomeViewControllerを含むライブラリを使用しているなら、これを試すことができます:

  let awesomeViewController = AwesomeViewController()
  awesomeViewController.navigationBar.barStyle = .blackTranslucent // or other style

ViewControllerの包含について

あなたはUIViewControllerContainmentを使用している場合は、見て価値があるいくつかの他のメソッドがあります。

子viewControllerでステータスバーの表示を制御したい場合(つまり、子が画面の上部に配置されている場合

スウィフトで

class RootViewController: UIViewController {

    private let messageBarViewController = MessageBarViewController()        

    override func childViewControllerForStatusBarStyle() -> UIViewController? {
        return messageBarViewController
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //add child vc code here...

        setNeedsStatusBarAppearanceUpdate()
    }
}

class MessageBarViewController: UIViewController {
    
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
        return .Default 
    }
}

アプリケーション全体のステータスバースタイルを変更する


迅速:


ステップ1:

Info.plistに次の属性を追加します:

View controller-based status bar appearance

その値を

NO

下の画像で説明しているように、

ここに画像の説明を入力

ステップ2:

AppDelegate.swiftファイルのdidFinishLaunchingWithOptionsメソッドに次のコードを追加します。

UIApplication.shared.statusBarStyle = .lightContent

または

UIApplication.shared.statusBarStyle = .default
  • .lightContentオプションは、アプリケーション全体に対してstatusBarの色を白に設定します。

  • .defaultオプションは、アプリケーション全体に対してstatusBarの色を元の黒色に設定します。


目的 - C:


SWIFTセクションの最初の手順に従ってください。次に、このコードをAppDelegate.mファイルに追加します。

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

または

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow