How to change the font and text color of the title of UINavigationBar

大兔子大兔子 提交于 2019-12-06 18:22:01

问题


I want to be change the font of the title to Avenir, and I want to make it white. Here is my code in the viewDidLoad method:

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

This code only changes the color of the title, not the font. Additionally, I tried implementing this in the App Delegate File, but that did not work.

Here is what my UINavigationBar looks like:

I want the title to have a font of Avenir as well. How do I achieve this?


回答1:


I use this:

Update, it seems this is needed as well:

    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]



回答2:


If you want the styles to be applied through out the whole app add these lines in the AppDelegate.m file.

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 sets the Font color.

NSFontAttributeName sets a custom font face to the title text.

NSShadowAttributeName applies a nice shadow effect to the text, you can remove this part if you want.

Also in advance, you can add these line to hide the text that comes up in back button in action bar when you navigate to another view within the navigation controller.

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

Hope this help your question :)




回答3:


In case someone needs this in Swift 4:

let navBarAppearance = UINavigationBar.appearance()
navBarAppearance.barTintColor = .red
navBarAppearance.tintColor = .white
navBarAppearance.titleTextAttributes = [
        NSAttributedString.Key.foregroundColor: UIColor.white,
        NSAttributedString.Key.font: UIFont(name: "Avenir", size: 20)!]



回答4:


Your code is OK you just need to set all of titleTextAttributes in one line:

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



回答5:


I would just create an outlet and do this:

@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)!]
}


来源:https://stackoverflow.com/questions/31846263/how-to-change-the-font-and-text-color-of-the-title-of-uinavigationbar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!