iOS8でSwiftを使用して特定のViewControllerのステータスバーの色を変更する


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

任意のViewControllerで上記のコードを使用して、特定のビューコントローラーのstatusBarの色を白に設定しても、iOS8 では機能しません。助言がありますか?UIApplication.sharedApplicationメソッドを使用すると、アプリ全体のInfo.plistで必要な変更を行った後、色が変わります。

// Change the colour of status bar from black to white
UIApplication.sharedApplication().statusBarStyle = .LightContent

必要な特定のViewControllerのステータスバーの色を変更するにはどうすればよいですか?

回答:


348

すべての提案を読み、いくつかのことを試した後、次の手順を使用して、特定のビューコントローラーでこれを機能させることができます。

最初の一歩:

info.plistを開き、「コントローラーベースのステータスバーの外観を表示する」という名前の新しいキーをNOに挿入します

2番目のステップ(単なる説明、これを実装する必要はありません):

通常、次のコードをAppDelegateのapplication(_:didFinishLaunchingWithOptions :)メソッドに配置します。

スウィフト2

UIApplication.sharedApplication().statusBarStyle = .LightContent

スウィフト3

UIApplication.shared.statusBarStyle = .lightContent

しかし、それはすべてのViewControllerに影響しstatusBarStyleます。

それで、これを特定のViewControllersのために機能させる方法-最終ステップ:

を変更するビューコントローラファイルを開き、statusBarStyle次のコードをに配置しますviewWillAppear()

スウィフト2

UIApplication.sharedApplication().statusBarStyle = .LightContent

スウィフト3

UIApplication.shared.statusBarStyle = .lightContent

また、viewWillDisappear()その特定のviewControllerのメソッドを実装し、次のコード行を追加します。

スウィフト2

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default

}

スウィフト3

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
}

この手順では、最初にstatusBarStyle特定のビューコントローラーのを変更し、次に特定のビューコントローラーが非表示になったdefaultときに変更します。を実装しないviewWillDisappear()と、statusBarStyle永続的に新しい定義値に変更されますUIStatusBarStyle.LightContent


4
Status bar is initially hidden = YESinfo.plistファイルで設定した場合、「ビューコントローラーベースのステータスバーの外観= NO」はステータスバーが非表示になることに注意してください。
xi.lin

13
UIStatusBarStyle.Default使用viewWillDisappear()に戻す場合viewWillAppear()は、viewDidLoad()... ではなく、を使用して初期化する必要があります。それ以外の場合は、再ロードせずにそのビューに戻ると、StatusBarStyle期待どおりに表示されません。
ウィリアムGP

7
Swift 3の場合 UIApplication.shared.statusBarStyle = .lightContent
ibrahimyilmaz 2016年

4
それはあなたがステータスバーの色を変更する方法はまだはっきりしていない
DoruChidean

4
みんな、iOS 9からは非推奨
by Jeevan

108

(2019年9月20日現在)

Swift 5Swift 4.2Swift 4

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
    .lightContent
}

7
super.viewWillAppearこのコードをコピーして貼り付ける場合は、必ず電話してください
Stephen Silber

含まれるsuper.viewWillAppear()に編集されました。ヒントをありがとう@StephenSilber!
BennyTheNerd

preferredStatusStyleをオーバーライドする必要があります。オーバーライドしないと機能しません。それを指摘してくれてありがとう。+1
2017

3
使い方UIApplication.shared.statusBarStyle = .lightContent[のUIViewController preferredStatusBarStyle] -使用:このコンパイラの警告で結果を「statusBarStyle」のセッターは、iOS 9.0で廃止されました
airowe

3
アプリケーションのInfo.plistで、「コントローラーベースのステータスバーの外観を表示する」をYESに設定します
IvanPavliuk

29

私はこのチュートリアルに従って、それは私のために働いた。ただし、注意点があるかどうかはわかりません。

https://coderwall.com/p/dyqrfa/customize-navigation-bar-appearance-with-swift

  • info.plistを開き、に設定 UIViewControllerBasedStatusBarAppearancefalseます。
  • AppDelegate.swiftを含むの最初の関数で、didFinishLaunchingWithOptions必要な色を設定します。

UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent

  • Swift 3アップデート *

    UIApplication.shared.statusBarStyle = .lightContent


11
それは各ビューコントローラにどのように固有
ですか

4
まさに、これは完全なアプリのためのものであり、それは問題ではありません。
Anuj 2015

3
iOS 8 SwiftとxCode 6.1.1を使用していますが、これらの2つの手順を実行しても機能しません。UIApplication.sharedApplication().statusBarHidden = falseAppDelegate.swift に追加する必要もありますdidFinishLauchingWithOptions
Ahmad Amin

これにより、アプリケーション全体に設定されます。特定のView Controllerについては、最初の回答を参照してください。それは私のために働いた。
Akshar Patel

「statusBarStyle」のセッターはiOS 9.0で非推奨になりました:-[UIViewController preferredStatusBarStyle]を使用してください
Oleksandr

29

NavigationControllerを使用したSwift 4.2ソリューション

最初の一歩:

info.plistを開いて、「コントローラーベースのステータスバーの外観を表示する」という名前の新しいキーを挿入するかUIViewControllerBasedStatusBarAppearanceYESを入力して、各VCが独自のステータスプロパティを使用できるようにします。

第二段階

各VCで、次のようにpreferredStatusBarStyleプロパティをオーバーライドします。

override var preferredStatusBarStyle : UIStatusBarStyle {
    return .lightContent //.default for black style
}

最後のステップ

カスタムNavigationControllerクラスのpreferredStatusBarStyleプロパティをオーバーライドします。

class NavigationController : UINavigationController {

override var preferredStatusBarStyle : UIStatusBarStyle {

    if let topVC = viewControllers.last {
        //return the status property of each VC, look at step 2
        return topVC.preferredStatusBarStyle  
    }

    return .default
}

これは、ナビゲーションコントローラと独自のコントローラを使用して期待される結果を達成する方法にすぎません。私は私のプロジェクトのためにやったとしても、あなたは:) prefersStatusBarHiddenため、この方法で行うことができます
atereshkov

22

ここには10億の答えがあるので、拡張機能の形式で別のものを追加してみませんか(@Cœurの助けを借りて)

スウィフト3

拡張:

extension UIApplication {
    class var statusBarBackgroundColor: UIColor? {
        get {
            return (shared.value(forKey: "statusBar") as? UIView)?.backgroundColor
        } set {
            (shared.value(forKey: "statusBar") as? UIView)?.backgroundColor = newValue
        }
    }
}

実装:

UIApplication.statusBarBackgroundColor = .blue

2
このアプローチはプライベートAPIへのアクセスと見なされる可能性があり、アプリがAppleによって拒否される可能性があることに注意してください。
JWhitey 2018年

または、少なくともそれはAppleの実装の詳細に依存しており、iOSの変更により警告なしに壊れる可能性があります。
Chris Prince、

19

Info.plistで、Viewコントローラーベースのステータスバーの外観を任意の値に定義する必要があります。

YESを定義する場合は、各ビューコントローラのpreferredStatusBarStyle関数をオーバーライドする必要があります。

NOを定義すると、AppDelegateで次のようにスタイルを設定できます。

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

7
setStatusBarStyleはiOS 9.0で非推奨になりました
Jeffrey Neo

@Jeffrey_Neoそれは本当ですが、私は代替品を機能させることができません。あなたのコメントを、動作するコードの答えとして見ると便利です。
dumbledad 2016年

15
override func viewWillAppear(animated: Bool) {
    self.navigationController?.navigationBarHidden =  true

    UIApplication.sharedApplication().statusBarHidden = false
    UIApplication.sharedApplication().statusBarStyle = .LightContent

    let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView
    if statusBar.respondsToSelector("setBackgroundColor:") {
        statusBar.backgroundColor = UIColor.redColor()
    }

}

使用したvalueForKey("statusBar")アップルのガイドラインに準拠していないこと
・クール

15

スウィフト3

let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to: #selector(setter: UIView.backgroundColor)) {
  statusBar.backgroundColor = UIColor.black
} 

これは、特定のビューコントローラーのステータスバーの背景色を設定するためのソリューションです。


3
UIViewは常にSwiftのbackgroundColorに応答します。
・クール

13

SWIFT 2

viewWillAppearに以下を追加することで、ステータスバーの背景の外観を正常に変更できました。

let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView

    if statusBar.respondsToSelector(Selector("setBackgroundColor:")) {
        statusBar.backgroundColor = .redColor()
    }

10

preferredStatusBarStyleあなたが述べたように実装し、呼び出しself.setNeedsStatusBarAppearanceUpdate()ViewDidLoadそしてInfo.plist UIViewControllerBasedStatusBarAppearanceYESYESデフォルトで)に設定して呼び出し ます

なぜ機能しないのかは明らかではありません。コードを確認する必要があります。もう1つの提案は、機能するコードviewDidLoad UIApplication.sharedApplication().statusBarStyle = .LightContentを使用して、表示が消えたときにこれをデフォルトに変更することですviewWillDisappear


答えの最初の部分を実装するだけでうまくいきました。ただし、Info.plistにUIViewcontrollerBasedStatusBarAppearanceを追加していません。それはまだ機能しました。
Akshar Patel

10

迅速3

.plist

View controller-based status bar appearance = NO

AppDelegate.swift

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Custom statubar
        UIApplication.shared.isStatusBarHidden = false
        UIApplication.shared.statusBarStyle = .lightContent
        let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
        statusBar.backgroundColor = UIColor.gray

        return true
    }

1
私はすべての解決策を試しました...これは私のためだけにうまくいきました!理由はわかりません:D
Khaled Hayek

抽選の幸運
Giang

... [のUIViewController prefersStatusBarHidden] -使用: 'isStatusBarHidden'のセッターは、iOS 9.0で廃止されました
..描いた

9

私の状況では、ストーリーボードを使用してビューコントローラーを整理しています。すべてのステータスバーのスタイルを変更したいと思います。

下の写真をご覧ください。

ここに画像の説明を入力してください

StarsビューコントローラはCPBaseNavigationController、とCPBaseNavigationControllerのサブクラスですUINavigationController

私は次のセットをやってみます:

  1. AppDelegate.swiftFUNC didFinishLaunchingWithOptions、追加

    //change status bar color
    UIApplication.sharedApplication().statusBarHidden = false
    UIApplication.sharedApplication().statusBarStyle = .LightContent

    しかし、効果はありません。

  2. StoryBoardでBase Tab BarController(上の画像)を選択Attributes InspectorSattus Barます。選択して、属性をLight Content.so bad、no effect に変更します。

ここに画像の説明を入力してください

  1. 最後に取得しました。カスタムナビゲーションコントローラーCPBaseNavigationControllerで、funcを追加します。preferredStatusBarStyle

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

    うまくいきます!

また、statusBarStyle9.0 で非推奨になりました-[UIViewController preferredStatusBarStyle]


9

ナビゲーションベースのアプリケーションに対応

    var addStatusBar = UIView()
    addStatusBar.frame = CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 20);
    addStatusBar.backgroundColor = global().UIColorFromRGB(0x65b4d9)
    self.window?.rootViewController?.view .addSubview(addStatusBar)

この特定のコードを追加する場所では、これを機能させることができませんでした。
Anuj 2015

UはそれをdidFinishLaunchingWithOptionsのApp Delegateファイルに追加できます
Jio

1
ハードコードされた320の幅の代わりに、addStatusBar.frame = CGRectMake(0、0、UIScreen.mainScreen()。bounds.width、20)を使用する方が良いでしょうか?
Torsten Ojaperv

@TorstenOjapervを編集
Jio

Swift 3.0でそれを行う方法
YETI 2016

8

Swift 3.0 Xcode 8ではすべてがはるかに簡単になりました

App Delegateファイルで以下のコードを使用した後

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

これを挿入してください:

UINavigationBar.appearance().barStyle = .black

UINavigationBar.appearance().barTintColor = UIColor(red: 230, green: 32, blue: 31, alpha: 1.0)

1
赤、緑、青の値の範囲は0〜1です。値を255で除算する必要があります。そうしないと機能しません。
マカレル2017

8

スウィフト3

//
//  LoginController.swift
//  Swift 3
//
//  Created by The Crab on 17/01/2017.
//  Copyright © 2017 Paxi Labs. All rights reserved.
//

import UIKit

class LoginController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        setNeedsStatusBarAppearanceUpdate()

        view.backgroundColor = UIColor(red: 61/255, green: 91/255, blue: 151/255, alpha: 1)

    }

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

7

Swift 4 navigationViewControllerが埋め込まれていない特定のViewControllerの場合、これをViewControllerファイルに追加するだけです。

override var preferredStatusBarStyle : UIStatusBarStyle {
    return .lightContent
}

ナビゲーションコントローラーが埋め込まれている場合はどうしますか?
icekomo

7

これを機能させるもう1つの本当に簡単な方法は、UINavigationControllerクラスの拡張を作成することです。

preferredStatusBarStyle:メソッドのオーバーライドは機能しないので、UINavigationControllerクラス内で行います。

    extension UINavigationController {
        open override var preferredStatusBarStyle: UIStatusBarStyle {
            return .lightContent
        }
    }

4

App Delegateファイル内の以下のコードを使用して(RGB形式で)特定の色を設定しました。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
. . .

 UIApplication.sharedApplication().statusBarHidden = false
        UIApplication.sharedApplication().statusBarStyle = .LightContent

        let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView
        if statusBar.respondsToSelector(Selector("setBackgroundColor:")) {
            statusBar.backgroundColor = UIColor.init(red: 0.1, green: 0.27, blue: 0.60, alpha: 1.0)
        }

. . .
}

以下のキーをInfo.plistファイルに追加する必要もあります:

ブール値がNOに設定されたコントローラーベースのステータスバーの外観表示する

スクリーンショット1

スクリーンショット2


Siwft 3.0では、どうすればよいですか?
YETI 2016

4

もっと簡単な方法を提案します

  1. Appleのドキュメントにあるように、viewDidLoadでsetNeedsStatusBarAppearanceUpdateを呼び出すだけです。

非表示/非表示のステータスやスタイルなどのビューコントローラーのステータスバー属性が変更された場合に、このメソッドを呼び出します。アニメーションブロック内でこのメソッドを呼び出すと、変更は残りのアニメーションブロックとともにアニメーション化されます。

  1. 実装preferredStatusBarStyleは、お好みのタイプを返します。

それはiOS 10.1で私のために働いた。

目的C

[self setNeedsStatusBarAppearanceUpdate];

-(UIStatusBarStyle)preferredStatusBarStyle {
     return UIStatusBarStyleLightContent;
}

迅速

setNeedsStatusBarAppearanceUpdate()

var preferredStatusBarStyle: UIStatusBarStyle { 
    return .lightContent
}

誰もこれを指摘しなかったのには驚きです。とにかくお楽しみください:)


4

私はこれに問題がありました。ビューでステータスバーの色をグローバルに変更することはあまり気になりませんでしたが、表示されたステータスバーの色を変更すると、受け入れられた回答のように消えました。信じられないかもしれませんがpreferredStatusBarStyle、目的のView Controllerをオーバーライドすることでこれを機能させることができます。多くの時間の後、これは私がそれを機能させるためにやったことです:

  1. ビューコントローラーベースのステータスバーの外観を変更する info.plistをYESに。
  2. これで、フルスクリーンビューコントローラは、オーバーライドすることでステータスバーのスタイルを変更できます preferredStatusBarStyle
  3. これは(非フルスクリーン)モーダルビューコントローラーでは機能せず、設定なしでは機能しないため、フルスクリーンを指定します modal​Presentation​Captures​Status​Bar​Appearanceためです。
  4. また、たとえば、ナビゲーションコントローラーなどのビューコントローラーが埋め込まれている場合は、ステータスバーのスタイルを最上位のビューコントローラーに要求します。child​View​Controller​For​Status​Bar​Style埋め込まれたView Controllerをオーバーライドして渡すことはうまくいくはずですが、私にはうまくいきませんでした。そのため、埋め込みステータスコントローラーの優先ステータスバーを優先ステータスバースタイルとして返しました。このようなもの:

    override var preferredStatusBarStyle: UIStatusBarStyle {
         if let topViewController = viewControllers.last {
             return topViewController.preferredStatusBarStyle
         }
    
         return .default
    }

この答えは私を助けました!何らかの理由で、ナビゲーションコントローラー(モーダルで表示される)、ステータスバーのスタイルを最上位のビューコントローラーに暗黙的に要求していないことがわかりました。したがって、そこにUINavigationControllerあるchild​View​Controller​For​Status​Bar​Stylevar をサブクラス化してオーバーライドし、を返す必要がありましたself.topViewController
18:18の

3

Swift 4または4.2

あなたのVCに追加することができます

preferredStatusBarStyle

そして戻り値を

.lightContentまたは.default

例:

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
}

3

(2020年6月10日現在)

Swift 5ファイルの編集なし.Plist

を使用している場合はStoryboard、に移動してNavigationControllerを選択しnavigationBar、をクリックしてAttributes Inspector、を変更しstyleます。必要な場合はlight content白いステータスバー)設定を除き、「defaultスタイルを設定」と言います。必要なblack場合はdark content黒いステータスバー)設定しますdefaultます。

デフォルト(UIBarStyleDefault)では、フォアグラウンドのUIStatusBarStyleDefaultステータスバーが暗くなります。そしてUIBarStyleBlackUIStatusBarStyleLightContentステータスバーを。

プログラム的に

let nav = UINavigationController(rootViewController: rootViewController)

    nav.navigationBar.barStyle = .default //gives you dark Content status bar

    nav.navigationBar.barStyle = .black  //gives you light content status bar

ナビゲーションバーなし編集.Plist

UIViewControllerBasedStatusBarAppearance/ View controller-based status bar appearanceをに追加しinfo.plist、設定値はtrueます。

OverridepreferredStatusBarStyleコントローラーのプロパティ

class ViewController: UIViewController {
    override var preferredStatusBarStyle : UIStatusBarStyle {
        return .lightContent
    }
}

2

Swift 3.0アップデート

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        UIApplication.shared.statusBarStyle = .lightContent

        return true
    }

2

私と一緒に機能したのは、ストーリーボードで、ナビゲーションコントローラーに移動し、ナビゲーションバーを選択し、属性インスペクターをクリックして、スタイルをデフォルトから黒に変更します。それでおしまい!


2

SWIFT 4.2 ちょっと、私はソリューションを共有したかった、それは私のために働いた、私はGraig Grummittによるこのとらえどころのない主題に関する素晴らしい記事から得た。

ステップ1他の人があなたのPLISTに以下を追加すると述べたように

View controller-based status bar appearance YES

RootViewcontrollerのステップ2に以下を追加

var statusBarHidden: Bool = false {
        didSet(newValue) {
            UIView.animate(withDuration: 0.1) {
                self.setNeedsStatusBarAppearanceUpdate()
            }
        }
    }

    override var prefersStatusBarHidden: Bool {
        return statusBarHidden
    }

    var vcStatusBarStyle: UIStatusBarStyle = .default {
        didSet(newValue) {
            UIView.animate(withDuration: 0.1) {
                self.setNeedsStatusBarAppearanceUpdate()
            }
        }
    }

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return vcStatusbarStyle
    }

いずれかのプロパティを更新する場合statusBarHiddenまたはvcStatusBarStyleそれが呼ぶsetNeedsStatusBarAppearanceUpdate()と、どちらかのために新しい値でステータスバーを更新しますprefersStatusBarHiddenpreferredStatusBarStyle。私の状況では、表示可能なchildviewcontrollerの親であるコンテナーviewcontrollerのこれらのプロパティを更新する必要がありました。簡単なデリゲートメソッドを使用してこれを行いました。

protocol MainViewControllerDelegate {
    func updateStatusBarStyle(statBarStayle: UIStatusBarStyle)
    func toggleStatusBar(visable: Bool)
}

もちろん、childViewController(Visible VC)をインスタンス化するときは、MainViewcontroller(Container VC)をデリゲートとして設定することを忘れないでください。私は時々します。:)

childViewController.delegate = self

次に、childViewControllerで、ステータスバーを更新する必要があるときにデリゲートメソッドを呼び出しました。

self.delegate?.updateStatusBarStyle(statBarStayle: .default)

上記のように、Graig Grummittはこのソリューションについてさらに詳しく説明し、UINavigationControllersとの連携についても説明します。ここにリンク:ステータスバーの謎の事件


1

サポートファイルグループ(左側の上部-プロジェクトの名前)をクリックします。情報に移動します。バンドル名の下のように、リスト間のどこか+をクリックします。そして、「コントローラーベースのステータスバーの表示を表示する」を追加して、NOに設定します。次に、AppDelegate.swiftを開き、次のように変更します。

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

return true
}

それでおしまい。


あなたは質問を間違って読んだ。アプリケーション全体ではなく、特定のビューコントローラーのStatusBarStyleを変更する方法について尋ねました。
Anuj 2015

@Anuj以下の私の回答をチェックしてください
theCrab

1

Xcode 10の場合、クラスを作成してそれをviewControllerクラスの前に置くことができます。すべてのビューコントローラーでこのクラスを呼び出すことができます。ライトコンテンツステータスバーが必要です...

class UIViewControllerWithLightStatusBar: UIViewController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
}

次に、viewControllerクラスを次のように変更します。

class YourViewController: UIViewControllerWithLightStatusBar {
...
}

そして、それだけです...


1

swift4の特定のビューコントローラーのナビゲーションベースで機能

   let app = UIApplication.shared
   let statusBarHeight: CGFloat = app.statusBarFrame.size.height

   let statusbarView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: statusBarHeight))
   statusbarView.backgroundColor = UIColor.red
   view.addSubview(statusbarView)

1

警告


'statusBarStyle'のセッターはiOS 9.0で廃止されました:-[UIViewController preferredStatusBarStyle]を使用してください

UIApplication.shared.statusBarStyle = .default

だから私の解決策は次のとおりでした:ナビゲーションコントローラーから拡張を行う:

extension UINavigationController {
    open override var preferredStatusBarStyle: UIStatusBarStyle {
        if let topViewController = presentedViewController{
            return topViewController.preferredStatusBarStyle
        }
        if let topViewController = viewControllers.last {
            return topViewController.preferredStatusBarStyle
        }

        return .default
    }
}

アプリのスタイルとは異なるスタイルを持つviewControllerがある場合、これを作成できます

var barStyle = UIStatusBarStyle.lightContent
override var preferredStatusBarStyle: UIStatusBarStyle{
    return barStyle
}

アプリのステータススタイルが 次のようになっていて、.defaultこの画面を.lightContentbarStyleが.lightContentデフォルト値として取るようにしたい場合、ステータスバーのスタイルをlightContentにviewWillDisappear変更し、次にbarStyleをアプリのステータスバーのスタイルに再度変更するときに確認します。私たちの場合は.default

これは私にとってはうまくいきます


1

ステータスバーのカスタムカラー(iOS11 +、Swift4 +)

ステータスバーをカスタムカラーに変更する方法をお探しの場合は、これが実用的なソリューションです。

let statusBarView = UIView()
view.addSubview(statusBarView)
statusBarView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    statusBarView.topAnchor.constraint(equalTo: view.topAnchor),
    statusBarView.leftAnchor.constraint(equalTo: view.leftAnchor),
    statusBarView.rightAnchor.constraint(equalTo: view.rightAnchor),
    statusBarView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor)
])
statusBarView.backgroundColor = .blue
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.