去掉NavBar下面的黑线

所有的事儿都与起因,追其原因,然后找到答案,从而使得进步

著名程序员【祈·乌牧鲅格】曾经说过,每个程序员的成长都是一个踩坑的过程,坑踩过了才能尽可能少的产生问题。

去掉NavBar下面的黑线_第1张图片
nav下面的黑线.png

我就想问问这是什么鬼,为什么有个黑线??
尝试了修改navbar的背景颜色,也尝试修改了我的searchbar的颜色。。可是还是找不到原因。

那么怎么办呢?那么做个游戏吧-----找到黑线

去掉NavBar下面的黑线_第2张图片
找到黑线.png

我也是满脸黑线啊.....

原来黑线是这个东西

原来黑线是这个o(╯□╰)o.png

既然问题找到了那么就开始寻求解决方法吧

1-我需要找到这根黑线

- (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;
}

通过遍历NavBar,找到我需要的这根黑线

然后将其在ViewController里面赋值给本页面的lineView
@property (nonatomic, weak) UIImageView *lineView;
然后再viewDidLoad方法里面调用

//视图加载完成获取到导航栏最下面的黑线

- (void)viewDidLoad {  
    [super viewDidLoad];  
    //获取导航栏下面黑线  
    _lineView = [self getLineViewInNavigationBar:self.navigationController.navigationBar];  
}

并且在- (void)viewWillAppear:(BOOL)animated- (void)viewWillDisappear:(BOOL)animated

//视图将要显示时隐藏

- (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];  
}  

你可能感兴趣的:(去掉NavBar下面的黑线)