这个问题简单明了,答案很遗憾。
如何更改UINavigationBar
中的文字字体?
答案 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。)在导航控制器场景下找到导航栏视图
2.)更改“属性”检查器中的“标题字体”,“颜色”和“阴影”属性。
答案 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开始,您可以使用外观代理。
答案 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]];