アプリケーション全体にライトコンテンツスタイルを適用したいと思います。
以下のメソッドは、置換メソッドなしでiOS9で非推奨になりました。
-setStatusBarStyle:animated:
ステータスバーのスタイルを設定し、オプションで新しいスタイルへの遷移をアニメーション化します。
AppDelegate
で次のように機能しています:
Swift 1.2コード:
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
しかし、プロジェクトをiOS 9/Swift 2にアップグレードすると、次のような警告メッセージが表示されます。
<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
したがって、 Appleフォーラム およびこの回答からの解決策に従って CGContextSaveGState:無効なコンテキスト0x0デバイスでのみエラー
そのため、解決策に従って、プロパティUIViewControllerBasedStatusBarAppearance
をinfo.plist
ファイルから削除しました。
現在の状況は、アプリケーション全体のiOS 9でステータスバーのライトコンテンツスタイルを設定するにはどうすればよいですか?
フォーラムから:
すべてのビューにライトコンテンツを設定したくありません。
助言がありますか?
Objective-Cにも同じ問題があるはずです。
UINavigationControllerを使用し、ナビゲーションバーのbarStyle
を.Black
に設定することで、多くの作業を節約できます。これを行う必要があるのは1回だけです。ストーリーボードエディタでそれを行うことができます。
これにより、このUINavigationControllerがコマンドを実行している限り、ステータスバーのスタイルが自動的に.LightContent
に変わります。
UIApplication.shared.statusBarStyle = .lightContentも使用できます。 Swift3でも動作します。