系统导航栏a中跳转到自定义样式导航栏b,再由b返回a时,a的样式变成了b的自定义样式?
方法1:在a视图即将显示时,再次设置其导航栏样式,从而避免被b样式覆盖。
方法2:在视图b中,视图即将显示为设置新样式;视图即将消失时取消新样式,即设置回a视图样式。如下代码:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// 自定义导航栏样式
UINavigationBar *FTicketNavBar = self.navigationController.navigationBar;
//1-1 设置导航栏背景色
self.navBgImage = [UIImage imageNamed:@"xxx1.png"];
if ([FTicketNavBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
[FTicketNavBar setBackgroundImage:navBgImage forBarMetrics:UIBarMetricsDefault];
}
//1-2 导航栏底端下划线
self.navButtomline = InsertView(FTicketNavBar, CGRectMake(0.0, FTicketNavBar.frameHeight - 1.0, FTicketNavBar.frameWidth, 1.0));
navButtomline.backgroundColor = FTMainTypeColor;
}
- (void)viewWillDisappear:(BOOL)animated
{
// 设置回上层视图样式
UINavigationBar *FTicketNavBar = self.navigationController.navigationBar;
//1-1 设置导航栏背景色
self.navBgImage = [UIImage imageNamed:@"xxx2.png"];
if ([FTicketNavBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
[FTicketNavBar setBackgroundImage:navBgImage forBarMetrics:UIBarMetricsDefault];
}
//1-2 导航栏底端下划线
[self.navButtomline removeFromSuperview];
self.navButtomline = nil;
}