更改导航栏的字体

问题很简单,答案不幸。

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

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

如果你想改变界面生成器本身的字体(没有任何代码),这是在Xcode6中的方式:

1.)在导航控制器场景下find导航栏视图 在这里输入图像说明

2.)更改属性检查器中的标题字体,颜色和阴影属性。 在这里输入图像说明

以上答案有效。 我会在最后一行之前添加下面一行。 如果我不这样做的话,如果左侧有一个后退button,但是没有右侧button,标签似乎是错误的。

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

针对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/

不知道为什么所有的答案都包含了阴影。 添加操纵阴影的线不会改变文字字体。 这两行代码将适用于iOS 8.4和Swift

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

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

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

答案是这个问题的重复: https : //stackoverflow.com/a/12364740/883413

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