ステータスバーのスタイルを.Light
に変更しようとしていますが、Swift 1.2で実装した以前のコードはもう機能しないようです。ここにコードがあります。
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.sharedApplication().statusBarStyle = .LightContent
}
View controller-based status bar appearance
info.plistをYESに設定し、UIKitドキュメントを読むと、statusBarStyleの変更が無効になり、デフォルトのままになります。ただし、設定を「NO」に変更し、statusBarStyleを変更すると、デバッガでこの<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable
が表示されます。これはXcodeのバグですか?ステータスバーのスタイルを変更するには、info.plist設定をNOに変更する必要がありますが、その場合はエラーが発生します。
私はいつもこのようにしました。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
//Changing Status Bar
override func preferredStatusBarStyle() -> UIStatusBarStyle {
//LightContent
return UIStatusBarStyle.LightContent
//Default
//return UIStatusBarStyle.Default
}
}
どのSwift 2.xバージョンでも動作します。これには、View controller-based status bar appearance
ファイルのInfo.plist
をYES
に設定する必要があります。
View ControllerでpreferredStatusBarStyle
を引き続き使用できます。
ステップ1:info.plistで、ViewControllerBasedStatusBarAppearanceをYESに設定します。ステップ2:このコードを編集するViewControllerに追加します。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
***ヒント:ViewDidLoad()、didReceiveMemoryWarning()関数の外部でのみ機能するようです。
Swift 3はView controller-based status bar appearance
の値をNO
にinfo.plist
に追加し、次にViewController
に追加します:
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
展開情報の変更は機能しますが、それにもかかわらず-NOに設定するplistファイルに「View Controller-basedステータスバーの外観」キーを追加する必要があります。
これをAppDelegateに追加することもできます。このオプションは、アプリ内のすべてのViewControllerで変更し、他のVCごとに変更する必要がない場合に適しています。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.statusBarStyle = UIStatusBarStyle.LightContent
// instead of
// UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
// which gives warning about deprecation in iOS 9
return true
}
ここで試してみてください
まずinfo.plistファイルに移動し、この「View controller-based status bar Appearance」をキーとして追加し、値をNOに設定します
この後、AppDelegate.Swiftファイルに来て、このUIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
コード行を過ぎます
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool{
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
return true
}
このような
展開情報で「ライト」を選択できますが、「コントローラーベースのステータスバーの外観を表示」を追加して、NOに設定する必要もあります。
Swift 3の場合、preferredStatusBarStyle変数をオーバーライドして、これを使用します。
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
Xcode 7.0のバグのようです。 Error>: CGContextSaveGState: invalid context 0x0.
を設定すると、View controller-based status bar appearance
エラーも発生します。
今のところ、私はすべてのView Controllerでステータスバーの色をオーバーライドしています。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
既存の回答は素晴らしいですが、新しいアップデートでは今とは少し異なります!
override var
の代わりにoverride func
が混乱している人のために-Gistは同じであり、 'Info.plist'を変更する必要があります:
override var preferredStatusBarStyle: UIStatusBarStyle
{
//LightContent
return UIStatusBarStyle.lightContent
//Default
//return UIStatusBarStyle.default
}
アプリ内で時々変更したい場合は、前述のようにオーバーライドpreferredStatusBarStyle()
を使用できます。
IOSについて通知するために、setNeedsStatusBarAppearanceUpdate()
を呼び出した後、preferredStatusBarStyle()
も呼び出すようにしてください。