Gizmodo
Gizmodo

Reputation: 3232

iOS 13 UIBarButtonItem Font

Wanting to have my own custom font on navigation bar back button items, This worked for me in the past:

    let barButtonAttributes = [NSAttributedString.Key.foregroundColor : UIColor.pink,
                               NSAttributedString.Key.font : UIFont(name: "My-Awesome-Font", size: 18)!]
    UIBarButtonItem.appearance().setTitleTextAttributes(barButtonAttributes, for: .normal)
    UIBarButtonItem.appearance().setTitleTextAttributes(barButtonAttributes, for: .highlighted)

With iOS 13, this has stopped working for me. Is there a work around?

Upvotes: 9

Views: 2520

Answers (1)

Ash Cameron
Ash Cameron

Reputation: 1958

You'll want to look into the new UINavigationBarAppearance classes in iOS 13.

In your case:

let style = UINavigationBarAppearance()
style.buttonAppearance.normal.titleTextAttributes = [.font: #YOURFONT#]
style.doneButtonAppearance.normal.titleTextAttributes = [.font: #YOURFONT#]

navigationController?.navigationBar.standardAppearance = style
// You may want these as well:
navigationController?.navigationBar.scrollEdgeAppearance = ...
navigationController?.navigationBar.compactAppearance = ...

Edit: Documentation - https://developer.apple.com/documentation/uikit/uinavigationbarappearance

Upvotes: 16

Related Questions