Change global UIBarButtonItem appearance

Call setTitleTextAttributes on the UIBarButtonItem appearance proxy:

Swift 3:

UIBarButtonItem.appearance().setTitleTextAttributes([key : value], for: .normal)

Swift 2.x:

UIBarButtonItem.appearance().setTitleTextAttributes([key : value], forState: UIControlState.Normal)

Did you tried realising it with UIAppearance protocol? It should be used for global сustomizing some visual classes. I can suggest your some code like this:

UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UINavigationBar.classForCoder()]).setTitleTextAttributes(["attribute" : "value"], forState: .Normal)

Hopes it is clear from the code the way in works and how you can enwide it.