导航条UINavigationBar和工具栏tabBar的灰色高亮线去掉

本文介绍了在iOS开发中如何去除导航条(UINavigationBar)和工具栏(UITabBar)底部的灰色高亮线。传统方法是检查并修改其子视图,但更有效的方法是在设置背景图片时处理。通过设置self.tabBar.backgroundImage和调整navbar,可以成功移除这些线条。文中还提到了一些失败的尝试,如修改tabbar的layer或寻找并修改UIImageView子控件。

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

有时候做项目需求会遇到要求 去掉导航条navBar或者工具栏tabBar自带的灰色高亮的线,

NavBar

TabBar

ps.不是高清图 适当看吧!

之前用的方法都是 去查看nav和tabbar的子控件,判断是否是UIImageView,因为那个灰线是 一个UIImageView子控件携带的,之间的办法是:

-(void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];
    for (UIView *view  in self.tabBar.subviews) {
        if ([view isKindOfClass:[UIImageView class]]) {
            UIImageView *imageView=(UIImageView *)view;
            [imageView removeFromSuperview];
        }
    }
}

后来查找资料 发现更好的方法:
在设置self.tabBar.backgroundImage情况下,可以取消tabbar上的灰色线,

    [self.tabBar setShadowImage:[UIImage new]];

navbar上的灰色线也可以去除:

    [[UINavigationBar appearance] setShadowImage:[UIImage new]];

已验证了这个效果。

参考来自:感谢 crane乖乖 的分享。

ps.
失败尝试一
之前查找其他网友的做法,使用这个方法在 viewDid里面调用 打印self.tabBar.subviews 数组,只是打印了items,或者 使用 [self.tabBar recursiveDescription] 获取tabbar视图层次结构,也咩有看到UIImageView 控件,并不能达到效果。

 for (UIView *view  in self.tabBar.subviews) {
        if ([view isKindOfClass:[UIImageView class]]) {
            UIImageView *imageView=(UIImageView *)view;
            [imageView removeFromSuperview];
        }
 }

失败尝试二:

后来尝试修改tabbar的layer

self.tabBar.backgroundColor=[UIColor whiteColor];
self.tabBar.layer.borderColor =self.tabBar.backgroundColor.CGColor;
self.tabBar.layer.borderWidth =0.5;

也米有什么用处,我们设计给的图 是一个自带 1px 灰线的图片,这样只是削弱了 tabbar自带灰色线和图片自带灰色色的颜色,并不能满足项目需求。

这里写图片描述

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值