7

次の設定を検討してください。

  • UINavigationController1 つのサブクラスと 1つのサブクラスを含む単純なアプリケーションがありますUIViewController
  • UINavigationControllerpreferredStatusBarStyle()はメソッドをオーバーライドして戻りますUIStatusBarStyle.LightContent
  • UIViewControllerprefersStatusBarHidden()はメソッドをオーバーライドして戻ります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 差分で意味のある参照を見つけることができませんでした)?
  • 外観と可視性のメソッドをどこでもオーバーライドする代わりに、これに対するエレガントな解決策はありますか?
4

1 に答える 1