プログラミング

【Swift】NavigationBarの見た目をカスタマイズ設定する

swift-eyecatch

検証環境

  • Xcode 12.2
  • Swift 5.3.1

アプリ全体に反映させる場合

アプリ全体に反映させる場合は、AppDelegateのapplication(didFinishLaunchingWithOptions)に記載すると楽です。

//AppDelegate.swift

UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().backIndicatorImage = UIImage(named: "chevron.backward")?.withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(named: "chevron.backward")?.withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().barTintColor = .black
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().titleTextAttributes = [ .foregroundColor: UIColor.white ]
UINavigationBar.appearance().isTranslucent = false

こんな感じで色や戻るのアイコンなど色々設定すると、アプリ全体に反映させることが出来ます。

ViewControllerごとに個別に設定する場合

色やアイコンを設定するときに、個別のViewContorller内で、”navigationCOntroller?.navigationBar”にプロパティを設定します。

//AppDelegate
UINavigationBar.appearance().tintColor = .white

//各ViewController
navigationController?.navigationBar.tintColor = .white

これで、特定のVIewControllerにのみ、NavigationBarの見た目を反映させることが出来ます。

UINavigationControllerを使用している前提ですが、UINavigationBar単体でstoryboardに貼り付けている場合は、そのUINavigationBarのプロパティを変更する必要があります。(が、そんな使い方はほぼないですよね?)