去掉导航栏self.navigationController.navigationBar下默认黑线。app
方法一:(会影响导航栏的translucent透明属性)atom
//视图将要显示时隐藏 -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]]; } //视图将要消失时取消隐藏 -(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:nil]; }方法二:
@property (nonatomic, weak) UIImageView *lineView; //视图加载完成获取到导航栏最下面的黑线 - (void)viewDidLoad { [super viewDidLoad]; //获取导航栏下面黑线 _lineView = [self getLineViewInNavigationBar:self.navigationController.navigationBar]; } //视图将要显示时隐藏 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; _lineView.hidden = YES; self.navigationController.navigationBar.translucent = YES; self.navigationController.navigationBar.barTintColor = [UIColor whiteColor]; } //视图将要消失时取消隐藏 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; _lineView.hidden = NO; self.navigationController.navigationBar.translucent = NO; self.navigationController.navigationBar.barTintColor = [UIColor blackColor]; } //找到导航栏最下面黑线视图 - (UIImageView *)getLineViewInNavigationBar:(UIView *)view { if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) { return (UIImageView *)view; } for (UIView *subview in view.subviews) { UIImageView *imageView = [self getLineViewInNavigationBar:subview]; if (imageView) { return imageView; } } return nil; }