首页 文章

如果导航栏的颜色在不同的视图控制器之间发生变化,如何更改后退按钮的颜色?

提问于
浏览
2

我为不同的视图控制器设置了不同的条纹色调 . 某些视图控制器' bar tint colour requires the title text colour to be white and other View Controllers'条色调颜色要求它为黑色 . 现在我用于带有 white 导航栏的视图控制器的代码(在viewWillAppear方法中调用)是:

self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor()
    self.navigationController?.navigationBar.tintColor = UIColor.blackColor()
    self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "someFont", size: 20)!,  NSForegroundColorAttributeName: UIColor.blackColor()]

    UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor(), NSFontAttributeName: UIFont(name: "someFont", size: 17)!], forState: .Normal)

我用于 darker 导航栏的代码(在viewWillAppear方法中调用)是:

self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
    self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
    self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "someFont", size: 20)!,  NSForegroundColorAttributeName: UIColor.whiteColor()]

     UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName: UIFont(name: "someFont", size: 17)!], forState: UIControlState.Normal)

现在的问题是,我的前两个视图控制器有 white 导航栏,我的第三个视图控制器有一个 darker 导航栏 .

从第一个视图控制器移动到第二个视图控制器,后退按钮正常显示,并且为黑色 . 从第二视图控制器移动到第三视图控制器后,后退按钮通常再次出现,并且是白色的 .

但是当我按下第三个视图控制器上的后退按钮并进入第二个视图控制器后,后退按钮仍然是白色并且难以辨认(我不想要) . 只有当我点击它时它才会变黑;在点击左上角之前你看不到它 . 我怎么把它弄成黑色?

我试过在viewDidLoad,viewDidAppear和viewWillAppear函数中调用这些方法,但它只是没有解决问题 .

我需要帮助解决这个恼人的故障 . 谢谢 .

1 回答

  • 0

    只需直接设置所有内容而无需外观代理 . 外观代理为整个应用程序设置值,应该在应用程序运行的早期阶段配置它 . 最好的地方是 AppDelegateAppDelegate 类 . 你可以这样做:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        configureAppearance()
        return true
    }
    
    func configureAppearance() {
    
        // Configure for all UIBarButtonItems
    
        UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName: UIFont(name: "someFont", size: 17)!], forState: .Normal)
    
    
        // Configure for your view controller(s) where black button has to be
    
        UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([YourViewControllerWithBlackColorBtn.self]).setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor(), NSFontAttributeName: UIFont(name: "someFont", size: 17)!], forState: .Normal)
    }
    

相关问题