0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

XCode13かつiOS 15でナビゲーションバーが透過されてしまう

Posted at

何が起こったか

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アップデート対応は気が抜けませんね。。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?