1. ホーム
  2. ios

[解決済み] iOS13で、大きな文字モードのナビゲーションバーとステータスバーの背景色が異なる問題

2023-07-14 17:42:59

質問

問題を再現するための事前条件。

  1. Xcode 11 beta + iOS 13 (2019年6月12日までの最新版)
  2. ナビゲーションバーがラージテキストモードになる
  3. ナビゲーションバーの色を指定する

実機では、緑色のナビゲーションバーの上に、ステータスバーが白色のまま表示されます。

私が試した解決策。

  1. iOS12 に戻すと解決するが、いずれ iOS13 に遭遇する......。
  2. 大きな文字モードを無効にすると解決する...
  3. ステータス バーを非表示にすると解決しますが、ステータス テキストがナビゲーション バーの項目と重なるようになります。

何か良いアイデアがあれば、教えてください。

どのように解決するのですか?

ここではハックやファンキーさは必要ありません。重要なのは、希望する外観を定義し、この値をナビバーの両方の standardAppearance とその scrollEdgeAppearance . 私のアプリ全体のベースナビゲーションコントローラのサブクラスのinitには、次のようなものがあります。

if #available(iOS 13.0, *) {
    let navBarAppearance = UINavigationBarAppearance()
    navBarAppearance.configureWithOpaqueBackground()
    navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white]
    navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
    navBarAppearance.backgroundColor = <insert your color here>
    navigationBar.standardAppearance = navBarAppearance
    navigationBar.scrollEdgeAppearance = navBarAppearance
}