美工设计的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上有一条细线
打印这个控件的信息可以看到
可以看出它个坐标超出父控件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];
运行效果:
同理,如果去掉tabBar自带的毛玻璃效果,而使用纯色,可以这样做:
UIView *customBackgroundView = [[UIView alloc] initWithFrame:self.tabBar.bounds];
customBackgroundView.backgroundColor = [UIColor whiteColor];
[[UITabBar appearance] insertSubview:customBackgroundView atIndex:0];