web-dev-qa-db-ja.com

アプリケーション全体のiOS9でステータスバーのライトコンテンツスタイルを設定するにはどうすればよいですか?

アプリケーション全体にライトコンテンツスタイルを適用したいと思います。

以下のメソッドは、置換メソッドなしで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デバイスでのみエラー

そのため、解決策に従って、プロパティUIViewControllerBasedStatusBarAppearanceinfo.plistファイルから削除しました。

現在の状況は、アプリケーション全体のiOS 9でステータスバーのライトコンテンツスタイルを設定するにはどうすればよいですか?

フォーラムから:

enter image description here

すべてのビューにライトコンテンツを設定したくありません。

助言がありますか?

Objective-Cにも同じ問題があるはずです。

11
Ashish Kakkad

UINavigationControllerを使用し、ナビゲーションバーのbarStyle.Blackに設定することで、多くの作業を節約できます。これを行う必要があるのは1回だけです。ストーリーボードエディタでそれを行うことができます。

これにより、このUINavigationControllerがコマンドを実行している限り、ステータスバーのスタイルが自動的に.LightContentに変わります。

28
matt

UIApplication.shared.statusBarStyle = .lightContentも使用できます。 Swift3でも動作します。

0
Amanpreet