iOS修改TabBar顶部分割线的颜色,最简单方式

美工设计的TabBar顶部分割线的颜色比iOS系统自带的颜色要浅很多,所以需要修改系统tabBar的颜色.

网上搜索了一下,大部分做法是,调用tabBar的 setShadowImage: 和 setBackgroundImage: 方法

    [self.tabBar setShadowImage:[UIImage qy_imageWithColor:[UIColor whiteColor]]];
    [self.tabBar setBackgroundImage:[UIImage qy_imageWithColor:[UIColor clearColor]]];

但是这样直接修改tabBar的backgroundImage可能会引入新的bug,导致导航栏显示异常


导航栏显示正常

导航栏显示异常

下面介绍一种最简单的方法:

使用XCode自带的Debug View Hierarchy可以看到,tabBar上有一条细线

image.png

打印这个控件的信息可以看到



可以看出它个坐标超出父控件0.5
所以就有了思路了:
在这个控件上面添加一条新的分割线,把那条线给遮住就行了

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, -0.5, SCREEN_WIDTH, 0.5)];
    view.backgroundColor = [UIColor redColor];
    [[UITabBar appearance] insertSubview:view atIndex:0];

运行效果:


image.png

同理,如果去掉tabBar自带的毛玻璃效果,而使用纯色,可以这样做:

    UIView *customBackgroundView = [[UIView alloc] initWithFrame:self.tabBar.bounds];
    customBackgroundView.backgroundColor = [UIColor whiteColor];
    [[UITabBar appearance] insertSubview:customBackgroundView atIndex:0];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容