web-dev-qa-db-ja.com

UIApplication.sharedApplication()。setStatusBarStyle()はiOS 9で非推奨になりました

私は使っています

UIApplication.sharedApplication().setStatusBarStyle()

私のappDelegateでは正常に機能しましたが、iOS 9以降、このメソッドは非推奨になり、代替手段が見つかりません。

アプリケーション全体のステータスバーのスタイルを.LightContentに変更したいのですが、xCodeが提供する唯一の提案は、これをVCで個別に処理することです。

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

誰でもアプリケーション全体でこれを行う方法を考えていますか?

前もって感謝します

38
Rick

私は解決策を見つけたと思います。私は最終的に設定しました

View controller-based status bar appearanceブール値からNO

Info.plistファイル内。

Info.Plist

次に、ターゲットのGeneral settings -> Deployment infoおよびドロップダウンオプションの変更Status Bar StyleからLightの代わりにDefault

Change Status Bar Style to Light

これにより、アプリケーション全体のステータスバーのスタイルがLightに変更されました。

これがお役に立てば幸いです!

69
Rick

In Swift 3はそのようなものです:

 UIApplication.shared.statusBarStyle = .lightContent
10
EgzonArifi

In Swift 3。

View Controllerで:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

アプリの実行時に起動画面のlightContentにステータスバーもある場合は、次のようにします。

enter image description here

8
Marlon Ruiz

View ControllerでIStatusBarStyleを動的に更新するには、このメソッドを使用します

これは非推奨の警告も削除します

'setStatusBarStyle:'は非推奨:iOS 9.0では最初に非推奨--[UIViewController preferredStatusBarStyle]を使用

呼び出しのために

[[UIApplication sharedApplication] setStatusBarStyle:style];

始めましょう

目的-C

define tilityFunction

+(void)setStatusBarStyle:(UIStatusBarStyle )style {    
    [[NSUserDefaults standardUserDefaults] setInteger:style forKey:@"UIStatusBarStyle"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

BaseViewControllerでこのメソッドをオーバーライドします

- (UIStatusBarStyle)preferredStatusBarStyle {
    UIStatusBarStyle style = [[NSUserDefaults standardUserDefaults] integerForKey:@"UIStatusBarStyle"];
    return style;
}

以下のようなUtilityFunctionを使用して、AnyViewControllerのUIStatusBarStyle値を設定します。

[UtilityFunctions setStatusBarStyle:UIStatusBarStyleDefault];

// call below code for preferred style
[self preferredStatusBarStyle];

Swift 4.

define tilityFunction

class func setPreferedStyle(style:UIStatusBarStyle)->Void {
    UserDefaults.standard.set(style, forKey: "UIStatusBarStyle")
    UserDefaults.standard.synchronize()
}

BaseViewControllerでこのメソッドをオーバーライドします

override var preferredStatusBarStyle: UIStatusBarStyle {
    if let style: UIStatusBarStyle = UIStatusBarStyle(rawValue:UserDefaults.standard.integer(forKey: "UIStatusBarStyle")) {
        return style
    }
    return UIStatusBarStyle.lightContent
}

以下のようなUtilityFunctionを使用して、AnyViewControllerのUIStatusBarStyle値を設定します。

Utility.setPreferedStyle(style: .lightContent)

// call below code for preferred style
preferredStatusBarStyle()
1
Muhammad Waqas

これはXcode 7でうまくいきました。

AppDelegateの場合:

UIApplication.sharedApplication().statusBarStyle = .LightContent
1
Caleb Kleveter

xcode 8でまだSwift 3を使用している場合:

(上記のMarlon Ruizの回答とは若干異なり、オーバーライド関数ではなく、viewDidLoad内)

override func viewDidLoad() {
    super.viewDidLoad()

    var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}
1
aremvee