Change color of Back button in navigation bar

后端 未结 26 1918
孤街浪徒
孤街浪徒 2020-12-02 05:58

I am trying to change the color of the Settings button to white, but can\'t get it to change.

I\'ve tried both of these:

navigationItem.leftBarButton         


        
相关标签:
26条回答
  • 2020-12-02 06:20
        self.navigationController?.navigationBar.tintColor = UIColor.black // to change the all text color in navigation bar or navigation 
        self.navigationController?.navigationBar.barTintColor = UIColor.white // change the navigation background color
        self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.black] // To change only navigation bar title text color
    
    0 讨论(0)
  • 2020-12-02 06:21
    self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
    

    This works for me, iOS 9.0+

    0 讨论(0)
  • 2020-12-02 06:21

    Not sure why nobody has mentioned this...but I was doing exactly what you were doing in my viewDidLoad...and it wasn't working. Then I placed my code into viewWillAppear and it all worked.

    The above solution is to change a single barbuttonItem. If you want to change the color for every navigationBar in your code then follow this answer.

    Basically changing onto the class itself using appearance() is like making a global change on all instances of that view in your app. For more see here

    0 讨论(0)
  • 2020-12-02 06:21

    You should add this line

     self.navigationController?.navigationBar.topItem?.backBarButtonItem?.tintColor = .black
    
    0 讨论(0)
  • 2020-12-02 06:22

    For Swift 2.0, To change the Navigation-bar tint color, title text and back button tint color changed by using the following in AppDelegate.swift

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
      // Override point for customization after application launch.
    
    
        //Navigation bar tint color change
    
        UINavigationBar.appearance().barTintColor = UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 0.5)
    
        //Back button tint color change
    
        UINavigationBar.appearance().barStyle = UIBarStyle.Default
        UINavigationBar.appearance().tintColor =  UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1)
    
        //Navigation Menu font tint color change
    
        UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1), NSFontAttributeName: UIFont(name: "OpenSans-Bold", size: 25)!]//UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 1.0)
    
        UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
    
    
        return true
    }
    
    0 讨论(0)
  • 2020-12-02 06:23

    I prefer custom NavigationController rather than setting global ui, or put in ViewController.

    Here is my solution

    
    class AppNavigationController : UINavigationController {
    
      override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
      }
    
      override func viewWillAppear(_ animated: Bool) {
    
      }
    
    }
    extension AppNavigationController : UINavigationControllerDelegate {
    
      func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        let backButtonItem = UIBarButtonItem(
          title: "   ",
          style: UIBarButtonItem.Style.plain,
          target: nil,
          action: nil)
        backButtonItem.tintColor = UIColor.gray
        viewController.navigationItem.backBarButtonItem = backButtonItem
      }
    
      func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
    
      }
    
    }
    
    

    Also you don't need to mess with Apple Api like EKEventEditViewController,PickerViewController and so on if you use global settings ui like UIBarButtonItem.appearance().tintColor = .white

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