IOS去掉导航栏(UINavigationBar)下方的横线

第一种方法:这是唯一一个隐藏这条线的官方用法,但是有一个缺陷-删除了translucency(半透明)

- (void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

    //去除导航栏下方的横线

    UINavigationBar *navigationBar = self.navigationController.navigationBar;

    // bgm.png为自己ps出来的想要的背景颜色

    [navigationBar setBackgroundImage:[UIImage imageNamed:@"bgm.png"]

                       forBarPosition:UIBarPositionAny

                           barMetrics:UIBarMetricsDefault];

    [navigationBar setShadowImage:[UIImage new]];

}

第二种方法:

   // 给导航条的背景图片传递一个空图片的UIImage对象

    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];

    // 隐藏底部阴影条,传递一个空图片的UIImage对象

    [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];

第三种方法:
1)声明UIImageView变量,存储底部横线

1
2
3
@implementation MyViewController {
     UIImageView *navBarHairlineImageView;
}

2)在viewDidLoad中加入:

1
navBarHairlineImageView = [ self findHairlineImageViewUnder:navigationBar];

3)实现找出底部横线的函数

1
2
3
4
5
6
7
8
9
10
11
12
- (UIImageView *)findHairlineImageViewUnder:(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 findHairlineImageViewUnder:subview];
         if (imageView) {
             return imageView;
         }
     }
     return nil ;
}

4)最后在viewWillAppear,viewWillDisappear中处理

1
2
3
4
5
6
7
8
9
- ( void )viewWillAppear:( BOOL )animated {
     [ super viewWillAppear:animated];
     navBarHairlineImageView.hidden =  YES ;
}
 
- ( void )viewWillDisappear:( BOOL )animated {
     [ super viewWillDisappear:animated];
     navBarHairlineImageView.hidden =  NO ;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值