Change Both Title Text Color and Font in all Navig

2020-04-20 06:06发布

问题:

I am using swift 2 and the newest version of Xcode and I am trying to change the font size, name, and color of the Title Text in every Navigation Bar. I wrote the following code in my AppDelegate section in the didFinishLaunchingWithOptions area but it only changes the color, the size or type of font is not affected. When I get rid of the color line, then the title follows the NSFontAttributeName line. Is there a way to have both lines of code perform? I haven't found anything that allows you to change both in code...

   func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.


        UIApplication.sharedApplication().statusBarStyle = .LightContent
        UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: (UIFont(name: "AvenirNext-DemiBold", size: 50.0))!]
        UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor(red: 244/255, green: 234/255, blue: 166/255, alpha: 1.0)]


        return true
    }

回答1:

Your code is silly. You set the titleTextAttributes and then you throw away the value you just set and replace it with another value!

UINavigationBar.appearance().titleTextAttributes = 
    [NSFontAttributeName: (UIFont(name: "AvenirNext-DemiBold", size: 50.0))!]
UINavigationBar.appearance().titleTextAttributes = 
    [NSForegroundColorAttributeName : UIColor(red: 244/255, green: 234/255, blue: 166/255, alpha: 1.0)]

If that's not what you want to do, set the titleTextAttributes to just one value, i.e. a dictionary consisting of both settings:

UINavigationBar.appearance().titleTextAttributes = [
    NSFontAttributeName: (UIFont(name: "AvenirNext-DemiBold", size: 50.0))!,
    NSForegroundColorAttributeName : UIColor(red: 244/255, green: 234/255, blue: 166/255, alpha: 1.0)
]