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;
    

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容