iOS 去掉导航栏的边界黑线

1.方法一:

 UIImage *img = [UIImage imageNamed:@""];

 [self.navigationController.navigationBar setBackgroundImage:img  forBarMetrics:UIBarMetricsDefault];

 self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];

注意:
1)如果img = [UIImage alloc]init] ; 导航条属性:translucency(半透明)。
2)建议使用不透明的背景图。一般高度:设置成64 = 导航栏的高度 + 状态栏的高度。

方法二:
1)、声明即将存储导航条下面那条横线的图片视图容器:

@interface XXXController () {

  UIImageView *navBarHairlineImageView;

}

2)、找到(viewDidLoad)那条黑色的横线:

 UINavigationBar *navigationBar = self.navigationController.navigationBar;
navBarHairlineImageView = [self  slnFindHairlineImageViewUnder:navigationBar];

解释:slnFindHairlineImageViewUnder 这是找到横线的方法。

  • (UIImageView *)slnFindHairlineImageViewUnder:(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 slnFindHairlineImageViewUnder:subview];
    
          if (imageView) {
    
            return imageView;
         }
     }
    return nil;
    

}
3.需要在这两个viewWillAppear和viewWillDisappear方法里,进行处理一下:

  • (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];
    navBarHairlineImageView.hidden = YES;
    

}

  • (void)viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:animated];
    navBarHairlineImageView.hidden = NO;
    

}

你可能感兴趣的:(iOS 去掉导航栏的边界黑线)