【iOS15.0】UINavigationBarが黒や透明になる問題の修正

はじめに

iPhone13が出る狭間でアプリ開発をしていました。
開発をしている途中はなるべくリリースまでXcodeのバージョンを上げたくはなかったのですが、iOS15系の端末で実行すると、UINavigationBarの背景色のデザインがiOS14系と異なることに気がつきました。既に書かれた内容かもしれませんが、自分用のメモとして書き残しておきたいと思います。よろしくお願いします。

動作環境について
  • Xcode Version 13.0
  • Swift 5.5

ちなみにXcode13.0だと以下の画像のように、StoryBoardで色を指定しても色が変わりません。

解決方法

もともとLarge Titleでのみに反映されていたScroll Edge Appearanceが全てのUINavaigationBarに適応されたのが原因の模様。
なので、iOS15もiOS14以下のバージョンもアプリで対応する場合は、Standard AppearanceScroll Edge Appearanceの両方に同じデザインの指定を書けば良さそうです。

StoryBoardで変更する

STEP.1
Appearancesを2箇所チェック

STEP.2
Standard Appearanceを設定する

STEP.3
Scroll Edge Appearanceを設定する

これで、Xcode13.0のStoryBoardでも色がちゃんと反映されるようになります。

コードで変更する

NavigationContorllerを親に持つViewControllerのviewDidLoad()等に以下のコード記述しました。

さいごに

Xcode12で開発を進めていたのですが、このタイミングでiPhone13の発表があってXcodeを仕方なく上げました…
UIが結構変わっているし、しかもNavigationBarを触っていると結構落ちるし。困ったー!

いつもの。

見ていただいてありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です