Change iOS 11 large title color

前端 未结 5 1564
时光取名叫无心
时光取名叫无心 2021-01-05 11:41

I\'m using the new enlarged navigation bar titles in iOS 11. But I can\'t seem to be able to change the textColor.

I tried doing:

self.navigationCont         


        
相关标签:
5条回答
  • 2021-01-05 11:56

    iOS 11

    Objective-C

    if (@available(iOS 11.0, *)) {
        self.navigationController.navigationItem.largeTitleDisplayMode =  UINavigationItemLargeTitleDisplayModeAlways;
        self.navigationController.navigationBar.prefersLargeTitles = true;
    
    // Change Color
        self.navigationController.navigationBar.largeTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
    
    } else {
        // Fallback on earlier versions
    }
    
    0 讨论(0)
  • 2021-01-05 11:56

    Swift 4.2

    self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
    

    with named color

    self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor(named: "Teal") ?? UIColor.black]
    
    0 讨论(0)
  • 2021-01-05 11:56

    Swift up through Swift 3.2 (not Swift 4+)

            self.navigationController?.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    
    0 讨论(0)
  • 2021-01-05 12:05
    self.navigationController.navigationBar.largeTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]}; 
    
    0 讨论(0)
  • 2021-01-05 12:19

    I think it's still a bug in Xcode 9 beta 6.

    I found different "solutions" for it:

    1. It's possible to change the color of the title if you put this in the AppDelegate:
        if #available(iOS 11.0, *) {
          UINavigationBar.appearance().largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]
        }
    
    1. Other way is to set the color in your Controller's viewDidLoad, but the secret to make it work is to set the font also:
        if #available(iOS 11.0, *) {            
          self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue, NSAttributedStringKey.font: UIFont.systemFont(ofSize: 31, weight: UIFont.Weight.bold) ]
        }
    

    Hope it helps you.

    Regards!

    0 讨论(0)
提交回复
热议问题