隐藏navbar的灰线

本文介绍两种方法来隐藏iOS应用中UINavigationBar下方的灰色下划线,包括使用官方推荐方法更改背景图片和通过查找并控制UIImageView的可见性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认情况下会有这条线


第一种方法:

1

2

3

4

5

6

UINavigationBar *navigationBar = self.navigationController.navigationBar;

// white.png图片自己下载个纯白色的色块,或者自己ps做一个

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

                   forBarPosition:UIBarPositionAny

                       barMetrics:UIBarMetricsDefault];

[navigationBar setShadowImage:[UIImage new]];

运行后效果如下(此处原有的灰色背景色会被white.png代替):


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

第二种方法:

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;

}

效果如下:


PS:第二种方法可以保持bar的translucent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值