方案一
//缺点:把当前navigationController所有的黑线都去掉了
self.navigationController.navigationBar.subviews.firstObject.subviews.firstObject.hidden=YES;
方案二
-(void)viewDidAppear:(BOOL)animated
{
// 只隐藏当前页面的黑线
UIImageView*imageView=self.navigationController.navigationBar.subviews.firstObject.subviews.firstObject;
// imageView.center=CGPointMake(0, -1);
// imageView.image=[UIImage new];
imageView.backgroundColor=[UIColor clearColor];
[super viewDidAppear:animated];
}
方案三
//偶然发现 在viewDidDisappear中使用 NSLog(@"%@",self.navigationController.navigationBar);
会发现打印为null,这时 你需要在viewWillAppear获取这个navigationController;即定义一个全局变量navigationController。
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.navigationBar.subviews.firstObject.subviews.firstObject.hidden = YES;
navigationController=(LX_NavigationController*)self.navigationController;
}
- (void)viewDidDisappear:(BOOL)animated
{
if (navigationController) {
navigationController.navigationBar.subviews.firstObject.subviews.firstObject.hidden = NO;
NSLog(@"%@",navigationController.navigationBar.subviews.firstObject.subviews.firstObject);
}
}
原理: 通过runtime 我们可以查询到这条黑线是一个变量名叫_shadowView的UIImageView 得到这个UIImageView 我们就能为所欲为啦~