次の設定を検討してください。
UINavigationController
1 つのサブクラスと 1つのサブクラスを含む単純なアプリケーションがありますUIViewController
。- UINavigationController
preferredStatusBarStyle()
はメソッドをオーバーライドして戻りますUIStatusBarStyle.LightContent
- UIViewController
prefersStatusBarHidden()
はメソッドをオーバーライドして戻りますtrue
iOS 8.0 - 8.2 では、別のUINavigationController
(何もオーバーライドしない別の UIViewController を持つ) が にmodalPresentationStyle
設定されて表示されるUIModalPresentationStyle.OverCurrentContext
と、新しく表示されたコントローラーはステータス バーの外観と可視性を継承します。
しかし、まったく同じ状況の iOS 8.3 では、新しく提示されたコントローラーはステータス バーの外観と可視性を継承しません。
もう 1 つの例は、のインスタンスを提示するUIImagePickerController
ことです。まったく同じことが、ステータス バーの外観に関して発生します。
質問は次のとおりです。
- iOS 8.3 で、新しく表示されたコントローラーがステータス バーの外観を継承しないのはなぜですか?
- 何が変更されましたか (これに関して、iOS 8.2 から 8.3 への API 差分で意味のある参照を見つけることができませんでした)?
- 外観と可視性のメソッドをどこでもオーバーライドする代わりに、これに対するエレガントな解決策はありますか?