📱

iOS15以降にてナビゲーションバーが黒くなる

2022/12/19に公開約1,300字

ナビゲーションバーとは?


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

ログインするとコメントできます