Changing Navigation Bar Colors in iOS 8: A Comprehensive Guide

Changing Navigation Bar Colors in iOS 8: A Comprehensive Guide

28 February 2025 Stephan Petzl Leave a comment Xcode

Customizing the appearance of the navigation bar in iOS can significantly enhance the user interface of your application. In this guide, we will explore how to modify the bar tint, tint, and title text color of the navigation bar using Swift. This tutorial is particularly relevant for developers working with iOS 8 and Xcode 6.0.1, but the principles can be applied to newer versions with slight adjustments.

Setting the Navigation Bar Color Globally

To change the navigation bar color across your entire app, you should set the appearance in the AppDelegate.swift file. This approach ensures consistency and eliminates the need to repeat code in individual view controllers.

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]

Customizing Colors in Individual View Controllers

If you want to customize the navigation bar for specific view controllers, you can use the viewWillAppear method. This method allows you to override the global settings for particular screens.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    let nav = self.navigationController?.navigationBar
    nav?.barStyle = UIBarStyle.black
    nav?.tintColor = UIColor.white
    nav?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange]
}

Using Interface Builder

For developers who prefer using Interface Builder, you can customize the navigation bar directly in the storyboard. By leveraging IBDesignable and IBInspectable, you can add custom attributes to the UINavigationController and adjust them visually.

@IBDesignable extension UINavigationController {
    @IBInspectable var barTintColor: UIColor? {
        set { navigationBar.barTintColor = newValue }
        get { return navigationBar.barTintColor }
    }

    @IBInspectable var tintColor: UIColor? {
        set { navigationBar.tintColor = newValue }
        get { return navigationBar.tintColor }
    }

    @IBInspectable var titleColor: UIColor? {
        set { navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: newValue ?? UIColor.white] }
        get { return navigationBar.titleTextAttributes?[NSAttributedString.Key.foregroundColor] as? UIColor }
    }
}

Enhancing Your Workflow with Repeato

As you work on customizing your iOS app’s interface, automating your testing process can save you time and reduce errors. Repeato, a no-code test automation tool, can help streamline this process. It offers features like test recording, editing, and execution powered by computer vision and AI. Repeato supports data-driven and keyword-driven testing, offering a practical alternative to other tools like Katalon, without the limitations of scripting language constraints or closed-source restrictions. With Repeato, you can maintain version control easily as all tests and workspace data are saved in text and JSON formats.

For more information on setting up automated tests in Repeato, visit our Getting Started Guide or explore our documentation for advanced testing techniques.

Like this article? there’s more where that came from!