【Swift】iOS15の端末でNavigationBarが透明になって表示されない

iOS15 から NavigationBar の設定方法が変わっているのを知らなかったので備忘録としてまとめ。
現在開発中の Swift アプリで、iOS 15 の端末でだけナビゲーションバーが表示されないことで発覚しました。
Storyboard でナビゲーションバーの色を指定していたのですが、コードでも指定しなければダメだったみたいです。

修正にあたり、参考にさせていただいた記事はこちら。

[Xcode]Xcode13へアップデート後に発生したNavigationBarの不具合の対処法 – Qiita
https://qiita.com/nkekisasa222/items/44690913673f67e781bd

 

サンプルコードは下記の通りです。

if #available(iOS 13.0, *) {
    let appearance = UINavigationBarAppearance()
    appearance.configureWithTransparentBackground()
    appearance.titleTextAttributes = [.foregroundColor: UIColor.white]
    appearance.backgroundColor = UIColor(red: 0.0/255.0, green: 123.0/255.0, blue: 187.0/255.0, alpha: 1.0)

    navigationController?.navigationBar.scrollEdgeAppearance = appearance
    navigationController?.navigationBar.standardAppearance = appearance
}

上記コードでは、ナビゲーションバーの色を深い青色に、文字色や「戻る」のテキストボタンを白色に設定しています。
こちらを追加して実行すると、きちんとナビゲーションバーが表示されるようになりました!

なお、Objective-C で記述する場合は下記のようにします。

if (@available(iOS 15.0, *)) {
    UINavigationBarAppearance *navBarAppearance = [[UINavigationBarAppearance alloc] init];
    [navBarAppearance configureWithOpaqueBackground];
    navBarAppearance.backgroundColor = [UIColor colorWithRed:0.0/255.0 green:123.0/255.0 blue:178.0/255.0 alpha:1.0];
    navBarAppearance.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.whiteColor};
    [UINavigationBar appearance].standardAppearance = navBarAppearance;
    [UINavigationBar appearance].scrollEdgeAppearance = navBarAppearance;
}

 

以上、iOS15 の端末で NavigationBar が透明になって表示されない時の対処方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG