Change the navigation bar's font

IphoneObjective CUinavigationcontrollerUinavigationbar

Iphone Problem Overview


The question is plain easy and simple, the answer unfortunately not.

How can you change the font of the text in the UINavigationBar?

Iphone Solutions


Solution 1 - Iphone

From iOS 7 and later:

NSShadow* shadow = [NSShadow new];
shadow.shadowOffset = CGSizeMake(0.0f, 1.0f);
shadow.shadowColor = [UIColor redColor];
[[UINavigationBar appearance] setTitleTextAttributes: @{
     NSForegroundColorAttributeName: [UIColor greenColor],
                NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:20.0f],
              NSShadowAttributeName: shadow
                                                      }];

From iOS 5 and later:

 [[UINavigationBar appearance] setTitleTextAttributes: @{
                                UITextAttributeTextColor: [UIColor greenColor],
                          UITextAttributeTextShadowColor: [UIColor redColor],
                         UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                                     UITextAttributeFont: [UIFont fontWithName:@"Helvetica" size:20.0f]
     }];

Earlier than iOS 5:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = UITextAlignmentCenter;
label.textColor =[UIColor whiteColor];
label.text=self.title;	
self.navigationItem.titleView = label;		
[label release];

Solution 2 - Iphone

If you wanted to change the font in the Interface Builder itself (without any code) here is the way to do it in Xcode6:

1.) Find the Navigation Bar view under the Navigation Controller Scene enter image description here

2.) Change the Title Font, Color and Shadow attributes in the Attributes Inspector. enter image description here

Solution 3 - Iphone

The above answer works. I would add the following line before the last line. If I don't, it seems the label is center-aligned incorrectly if there is a back button on the left side but no right button.

...
[self.navigationItem.titleView sizeToFit]; 
[label release]; // not needed if you are using ARC

Solution 4 - Iphone

Updated for iOS 7:

[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                                                      [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
                                                      shadow, NSShadowAttributeName,
                                                      [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]];

courtesy of:

http://www.appcoda.com/customize-navigation-status-bar-ios-7/

Solution 5 - Iphone

Not sure why all the answers included the shadow. Adding the lines that manipulate the shadow does nothing in respect to changing text font. These 2 lines of code will work for iOS 8.4 and Swift

let attributesDictionary = [NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 14)!]
navigationController!.navigationBar.titleTextAttributes = attributesDictionary

The titleTextAttributes stores a dictionary that will dictate the font, color, size, and other attributes of the navigation bar's title.

Solution 6 - Iphone

As of iOS 5 you can use the appearance proxy.

The answer is in a duplicate of this question: https://stackoverflow.com/a/12364740/883413

Solution 7 - Iphone

     NSShadow *shadow = [NSShadow new];
[shadow setShadowColor: [UIColor clearColor]];
[shadow setShadowOffset: CGSizeMake(0.0f, 1.0f)];

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                         [UIFont fontWithName:@"TimeBurner" size:27.0f], NSFontAttributeName,
                                         [UIColor whiteColor], NSForegroundColorAttributeName,
                                         shadow, NSShadowAttributeName,nil]];

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJoetjahView Question on Stackoverflow
Solution 1 - IphoneAravindhanView Answer on Stackoverflow
Solution 2 - IphoneinderView Answer on Stackoverflow
Solution 3 - IphoneRaj LalwaniView Answer on Stackoverflow
Solution 4 - IphoneAbuZubairView Answer on Stackoverflow
Solution 5 - IphoneKelvin LauView Answer on Stackoverflow
Solution 6 - IphoneRic SantosView Answer on Stackoverflow
Solution 7 - IphoneVinView Answer on Stackoverflow