何が起こったか
Xcode13かつiOS15だと、このプロパティがデフォルトで透過色が設定されてしまうと言う話
ドキュメントを読むとiOS13から使えるプロパティのようですが、XCode13を使って、iOS15へ向けてビルドすると、、
このようにナビゲーションが透過されてしまいます。
対処方法
AppDelegateのdidFinishLaunching(with options)で、これを書いてやればOKです。
AppDelegate.swift
let appearence = UINavigationBarAppearence()
appearence.backgroundColor = .white
UINavigationBar.appearence() = appearence
また、開発中アプリのDeployment TargetがiOS12以上だったので、このままではOS12でこのプロパティを利用できない旨の警告が出ます。
ただし、iOS13以上を許可すると、iOS15以下の端末でナビゲーションバーの両サイドにグラデーションがかかってしまいました。。
何か処理がコンフリクトしてるんですかね。
結局落ち着いた形はこれ
AppDelegate.swift
if #available(iOS15, *) {
let appearence = UINavigationBarAppearence()
appearence.backgroundColor = .white
UINavigationBar.appearence() = appearence
}
まとめ
アプリ全体のナビゲーションに影響が出ていたので、焦りました。
Appleさんこういう罠を仕込んでくるので、OSアップデート対応は気が抜けませんね。。