从应用程序调用:willFinishLaunchingWithOptions:
+(void)styleNavbar {
[[UIBarButtonItem appearance] setTintColor:[UIColor colorWithRed:45/255.0 green:48/255.0 blue:53/255.0 alpha:1]];
[[UIBarButtonItem appearance] setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor], UITextAttributeTextShadowColor:[UIColor blackColor], UITextAttributeTextShadowOffset: [NSValue valueWithCGSize:CGSizeMake(0,1.0)]} forState:UIControlStateNormal];
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:22/255.0 green:24/255.0 blue:26/255.0 alpha:1]];
}
我现在正试图在我的一个故事板的视图控制器中使用不同的配色方案。
我能够为导航栏和普通按钮设置色调。
在我的-viewDidLoad中:
[self.navigationController.navigationBar setTintColor:[MyColorScheme sharedInstance].lightBlueColor];
[self.navigationItem.rightBarButtonItem setTintColor:[MyColorScheme sharedInstance].lightBlueColor];
但我正在努力对后退按钮做同样的事情继续使用全局colorscheme,除非我评论+ styleNavbar行。我没有成功尝试过:
[self.navigationController.navigationBar.backItem.backBarButtonItem setTintColor:[MyColorScheme sharedInstance].lightBlueColor];
[self.navigationItem.backBarButtonItem setTintColor:[MyColorScheme sharedInstance].lightBlueColor];
[self.navigationItem.leftBarButtonItem setTintColor:[MyColorScheme sharedInstance].lightBlueColor];
[[UIBarButtonItem appearanceWhenContainedIn:[MySpecificViewController class], nil] setTintColor:[MyColorScheme sharedInstance].lightBlueColor];
运行上述所有行似乎都不会覆盖后退按钮的色调,即使我可以使用相同方法设置其他导航栏元素的样式。在使用应用程序范围外观代理设置其颜色后,是否可以设置后退按钮的样式?
答案 0 :(得分:1)
使用appearanceWhenContainedIn:
覆盖特定视图控制器工具栏/导航栏的全局设置。您需要为要进行不同着色的导航栏/工具栏创建子类。
The Apple documentation举例说明了如何做到这一点。
答案 1 :(得分:0)
您可以在viewWillAppear
上更新条形按钮的标题文字属性,如下所示:
[self.rightBarButton setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor orangeColor]} forState:UIControlStateNormal];
如果您想在离开此视图控制器时设置旧文本属性,可以在viewWillDisappear
上重新更新它。
答案 2 :(得分:-1)
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:251.0 / 255.0 green:59.0 / 255.0 blue:29.0 / 255.0 alpha:1.0]];