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 が透明になって表示されない時の対処方法についてでした。
ご参考になれば幸いです。