我目前正在开发具有多种导航栏颜色的 iphone/ipad 应用程序。在应用程序的一部分中,导航栏必须是橙色的,而在另一部分中,它必须是紫色的。在应用程序的开始屏幕上,导航栏是隐藏的。
导航栏、后退按钮和栏按钮的颜色在prepareForSegue 中根据应用程序两个部分的segue 标识符进行设置。
UIImage *navBackgroundImage = [UIImage imageNamed:@"Navigation-Bar-Orange.png"];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];
//Change the appearance of back button
UIImage *backButtonImage = [[UIImage imageNamed:@"Back-Orange"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
//Change the appearance of standard navigation button
UIImage *barButtonImage = [[UIImage imageNamed:@"Standard-Orange"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], UITextAttributeTextColor,
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)],
UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Futura-CondensedMedium" size:21.0], UITextAttributeFont, nil]];
当切换到应用程序的其他部分时(再次通过 segue),导航栏和标准栏按钮将正确着色,但后退按钮将具有应用程序前一部分的颜色。我曾尝试在应用程序中多次设置颜色(例如 viewWillAppear 和 viewDidLoad),但问题仍然存在。
如何解决此问题并为应用程序的两个部分显示正确的按钮颜色?是否有另一种(更好的)方法来设置不同的导航栏颜色?
出现问题的可视化示例: