私は使っています
UIApplication.sharedApplication().setStatusBarStyle()
私のappDelegateでは正常に機能しましたが、iOS 9以降、このメソッドは非推奨になり、代替手段が見つかりません。
アプリケーション全体のステータスバーのスタイルを.LightContentに変更したいのですが、xCodeが提供する唯一の提案は、これをVCで個別に処理することです。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
誰でもアプリケーション全体でこれを行う方法を考えていますか?
前もって感謝します
In Swift 3はそのようなものです:
UIApplication.shared.statusBarStyle = .lightContent
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()
これはXcode 7でうまくいきました。
AppDelegateの場合:
UIApplication.sharedApplication().statusBarStyle = .LightContent
xcode 8でまだSwift 3を使用している場合:
(上記のMarlon Ruizの回答とは若干異なり、オーバーライド関数ではなく、viewDidLoad内)
override func viewDidLoad() {
super.viewDidLoad()
var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}