Customize UINavigationBar Appearance Programmatically via AppDelegate

The Swift code example below demonstrates how to customize the UINavigationBar appearance via the AppDelegate.swift file.

If you are interested in video lessons on how to write Unit tests and UI tests to test your Swift mobile app, check out this page: Unit Testing Swift Mobile App

The blow Swift code example covers:

  • Set UINavigationBar tint color,
  • Set Navigation bar Title color,
  • Set navigation bar ItemButton tint color,
  • Set Navigation bar background image,
  • Set navigation bar Back button tint color.
import UIKit

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        // Set navigation bar tint / background colour
        UINavigationBar.appearance().barTintColor =
        // Set Navigation bar Title colour
    UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white]
        // Set navigation bar ItemButton tint colour
        UIBarButtonItem.appearance().tintColor = UIColor.yellow
        // Set Navigation bar background image
        let navBgImage:UIImage = UIImage(named: "bg_blog_navbar_reduced.jpg")!
        UINavigationBar.appearance().setBackgroundImage(navBgImage, for: .default)
        //Set navigation bar Back button tint colour
        UINavigationBar.appearance().tintColor = UIColor.white
        return true

    // MARK: UISceneSession Lifecycle

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.


For more Swift code examples and tutorials, please check the Swift Code Examples page on this website.

Leave a Reply

Your email address will not be published. Required fields are marked *