如何更改UINavigationBar标题的字体和文本颜色

我想把标题的字体改成Avenir,我想把它变成白色。 这是我在viewDidLoad方法中的代码:

 UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: UIFont(name: "Avenir", size: 20)!] UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

此代码只改变标题的颜色,而不是字体。 另外,我尝试在应用程序委托文件中实现这一点,但是这不起作用。

这是我的UINavigationBar看起来像: 在这里输入图像说明

我希望标题也有Avenir的字体。 我如何做到这一点?

我使用这个:

更新,似乎也需要这样做:

  self.navigationController?.navigationBar.barStyle = UIBarStyle.Black // I then set the color using: self.navigationController?.navigationBar.barTintColor = UIColor(red: 204/255, green: 47/255, blue: 40/255, alpha: 1.0) // a lovely red self.navigationController?.navigationBar.tintColor = UIColor.whiteColor() // for titles, buttons, etc. let navigationTitleFont = UIFont(name: "Avenir", size: 20)! self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: navigationTitleFont] 

如果您想要在整个应用程序中应用样式,请在AppDelegate.m文件中添加这些行。

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

NSForegroundColorAttributeName设置字体的颜色。

NSFontAttributeName将自定义字体设置为标题文本。

NSShadowAttributeName对文本应用了不错的阴影效果,如果需要,可以删除此部分。

另外,当您导航到导航控制器中的另一个视图时,还可以添加这些行以隐藏操作栏中后退button中显示的文本。

 [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) forBarMetrics:UIBarMetricsDefault]; 

希望这可以帮助你的问题:)

你的代码是好的,你只需要在一行中设置所有的titleTextAttributes

 UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white , NSFontAttributeName: UIFont(name: "Avenir", size: 17)!] 

我只想创build一个sockets,并做到这一点:

 @IBOutlet weak var navigationBar: UINavigationBar! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Avenir", size: 30)!] }