Skip to content
DeveloperMemos

Tweaking UINavigationBar Font with NSAttributedString.Key.font

iOS Development, UINavigationBar, NSAttributedString1 min read

The UINavigationBar is an essential component in iOS app development, often used for providing navigation and displaying titles. One common requirement from designers and developers is the ability to customize the font of the UINavigationBar title or its buttons. In this article, we will explore how to accomplish this using the NSAttributedString.Key.font in Swift.

Customizing UINavigationBar Font

In order to tweak the font of the UINavigationBar, we can leverage the power of attributed strings and the NSAttributedString.Key.font attribute. The NSAttributedString class allows us to apply custom attributes to specific ranges within a string.

Let's start by customizing the title font of the UINavigationBar. We can achieve this by setting the titleTextAttributes property of the navigation bar's appearance proxy. Here's an example:

1let navBarAppearance = UINavigationBarAppearance()
2navBarAppearance.titleTextAttributes = [NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 18)]
3UINavigationBar.appearance().standardAppearance = navBarAppearance

In the above code snippet, we create a new instance of UINavigationBarAppearance and assign it to the navBarAppearance variable. Then, we set the titleTextAttributes property of the appearance object, specifying the desired font using the NSAttributedString.Key.font key. Finally, we apply this appearance to the standard appearance of all UINavigationBars using the UINavigationBar.appearance().standardAppearance property.

Customizing Button Font

To customize the font of buttons within the UINavigationBar, such as back buttons or bar button items, we can use a similar approach. Here's an example that demonstrates changing the font of the back button:

1let backButtonAppearance = UIBarButtonItemAppearance()
2backButtonAppearance.normal.titleTextAttributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16, weight: .bold)]
3UINavigationBarAppearance().backButtonAppearance = backButtonAppearance

In the above code, we create an instance of UIBarButtonItemAppearance and assign it to the backButtonAppearance variable. Then, we set the normal.titleTextAttributes property of the appearance object, specifying the desired font for the back button. Lastly, we assign the appearance to the backButtonAppearance of the UINavigationBarAppearance object.


Customizing the font of UINavigationBar titles and buttons can greatly enhance the visual appeal of your iOS app. By utilizing the power of attributed strings and the NSAttributedString.Key.font attribute, you can easily tweak the font to match your design requirements. Experiment with different fonts and styles to create a unique and visually pleasing navigation bar for your app.