更改导航栏的字体

时间:2011-04-29 12:30:37

标签: iphone objective-c uinavigationcontroller uinavigationbar

这个问题简单明了,答案很遗憾。

如何更改UINavigationBar中的文字字体?

7 个答案:

答案 0 :(得分:158)

来自iOS 7及更高版本:

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
                                                      }];

从iOS 5及更高版本开始:

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

早于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];

答案 1 :(得分:15)

如果你想在Interface Builder中更改字体(没有任何代码),可以在Xcode6中进行更改:

1。)在导航控制器场景下找到导航栏视图 enter image description here

2.)更改“属性”检查器中的“标题字体”,“颜色”和“阴影”属性。 enter image description here

答案 2 :(得分:5)

上述答案有效。我会在最后一行之前添加以下行。如果我不这样做,如果左侧有一个后退按钮但没有右按钮,则标签看起来中心对齐不正确。

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

答案 3 :(得分:5)

针对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]];

礼貌:

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

答案 4 :(得分:4)

不确定为什么所有答案都包含阴影。添加操纵阴影的行对于更改文本字体没有任何作用。这两行代码适用于 iOS 8.4和Swift

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

titleTextAttributes存储一个字典,用于指定导航栏标题的字体,颜色,大小和其他属性。

答案 5 :(得分:1)

从iOS 5开始,您可以使用外观代理。

答案与此问题重复:https://stackoverflow.com/a/12364740/883413

答案 6 :(得分:1)

     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]];