📱
iOS15以降にてナビゲーションバーが黒くなる
ナビゲーションバーとは?
AppleDeveloper Documentationから引用
アプリの上部分にある、タイトルや「戻る」ボタン、「完了」ボタンとかを表示しているナビゲーションバー。
なぜiOS15から背景が黒くなる?
AppleDeveloper Documentationによると、iOS14以前はLarge Title
でのみナビゲーションバーに反映されていた外見設定のプロパティが、iOS15以降は全てのナビゲーションバーに適用されたとのこと。
今回はその適用が原因の模様。
iOS15以降に変更になった点
それぞれの説明をしていくと、
プロパティ | 対応OS | iOS15未満 | iOS15以降 |
---|---|---|---|
standardAppearance |
iOS13 ~ | 通常時(largeTitle のみ) |
通常時 |
scrollEdgeAppearance |
iOS13 ~ | 通常時・スクロール時 | スクロール中 |
compactAppearance |
iOS15 ~ | - | 通常時(端末横向き) |
compactScrollEdgeAppearance |
iOS13 ~ | 通常時・スクロール時(端末横向き) | スクロール時(端末横向き) |
のようだ。
今回の修正方法
コード
if #available(iOS 15.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = UIColor.white // 背景色の設定
appearance.titleTextAttributes = [.foregroundColor: .white] // タイトルの文字色
self.navigationController?.navigationBar.standardAppearance = appearance
self.navigationController?.navigationBar.scrollEdgeAppearance = appearance
}
まとめ
「iOSの新バージョンが出る = 追加要素があるかも・修正してバグ減らさなきゃ」を忘れちゃいけないなと思った。
Swiftの勉強頑張ろう。🤦♂️
Discussion