共有三种方法,也就是样式,根据不同场景选择不同的方法。
第一种方法:1,隐藏导航栏和黑线,(会导致导航栏透明)
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage=[UIImage new];
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar_background"] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = nil;
}
第二种方法:2,只是在当前页隐藏导航栏黑线,(只是隐藏了黑线,导航栏会是默认的颜色,不透明)
(如果设置了[UINavigationBar appearance].translucent = YES;
要这样设置self.navigationController.navigationBar.subviews[0].subviews[1].hidden = YES;)
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.navigationBar.subviews[0].subviews[0].hidden = YES;
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.navigationController.navigationBar.subviews[0].subviews[0].hidden = NO;
}
第三种方法:3,隐藏导航栏和黑线,导航栏不会变透明(根据需要设置导航栏颜色,变种于第一种方法)
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController.navigationBar setBackgroundImage:[self creatImgWithColor:[UIColor whiteColor] Frame:CGRectMake(0, 0, kScreenWidth, NAVIGATION_BAR_HEIGHT)] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage=[UIImage new];
}
-(UIImage*)creatImgWithColor:(UIColor*)color Frame:(CGRect)rect{
UIView *defaultPortrait = [[UIView alloc] initWithFrame:rect];
defaultPortrait.backgroundColor = color;
UIGraphicsBeginImageContext(defaultPortrait.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[defaultPortrait.layer renderInContext:context];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar_background"] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = nil;
}