Ios 当导航栏的颜色在不同的视图控制器之间变化时,如何更改“后退”按钮的颜色?
对于不同的视图控制器,我有不同的条淡色。某些视图控制器的条形图着色颜色要求标题文本颜色为白色,而其他视图控制器的条形图着色颜色要求标题文本颜色为黑色。现在,我在带有白色导航栏的视图控制器中使用的代码(在ViewWillAspect方法中调用)是:Ios 当导航栏的颜色在不同的视图控制器之间变化时,如何更改“后退”按钮的颜色?,ios,iphone,uinavigationbar,swift2,xcode7,Ios,Iphone,Uinavigationbar,Swift2,Xcode7,对于不同的视图控制器,我有不同的条淡色。某些视图控制器的条形图着色颜色要求标题文本颜色为白色,而其他视图控制器的条形图着色颜色要求标题文本颜色为黑色。现在,我在带有白色导航栏的视图控制器中使用的代码(在ViewWillAspect方法中调用)是: self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor() self.navigationController?.navigationBar.
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)
我用于较暗导航栏的代码(在VIEWWILLEXPENCE方法中调用)是:
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)
现在的问题是,我的前两个视图控制器有一个白色的导航栏,而我的第三个视图控制器有一个较暗的导航栏
从第一个视图控制器移动到第二个视图控制器时,“后退”按钮正常显示,并且为黑色。从第二个视图控制器移动到第三个视图控制器时,“后退”按钮再次正常显示,并且为白色
但是,当我按下第三个视图控制器上的后退按钮并转到第二个视图控制器时,后退按钮仍然是白色的,并且难以辨认(我不希望看到)。只有当我点击它时,它才会变成黑色;在点击左上角之前,你看不到它。我怎么把它变成黑色
我试着在viewDidLoad、ViewDidDisplay和ViewWillDisplay函数中调用这些方法,但这并不能解决问题
我需要帮助解决这个恼人的小故障。
谢谢。直接设置所有内容,无需外观代理。外观代理为整个应用程序设置值,并应在应用程序运行的早期阶段进行配置。最好的地方是
应用程序:使用AppDelegate
类的选项完成启动。
你可以这样做:
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)
}
那么我要删除外观代理吗?是的。只需删除appearance()并重试,它会给我一个错误,“额外参数ForState in call”。你能告诉我没有外观()的语法是什么吗?感谢@kiranderUIBarButtonItem.setTitleTextAttributes(…)显示的错误是“无法将类型为“[String:NSObject]”的值转换为预期的参数类型“UIBarItem”