有的时候因为项目需求,对tabbar以及navigationbar,需要去掉或者改变顶部及底部细线的颜色,对于这个问题,笔者在这里总结一下,方法不难,至于导航栏底部和tabbar顶部的黑线从何而来呢?通过层次结构会发现,是由于导航栏或者tabbar设置的默认图片导致的,要消除这种效果,就要摒弃系统自带的图片,自己生成一张图片,或者设置空的图片,下面就来上代码:
1.改变或者消除tabbar底部细线及其颜色
[self.tabBar setBackgroundImage:[UIImage new]];
[self.tabBar setShadowImage:[self.tabBar lineImageWithColor:[UIColor colorWithHexString:@"#fb9966"]]];
第一步是设置背景图片,第二部设置阴影图片,上面的是改变细线的颜色,我们可以自己画一张图片,画图片的方法如下:
- (UIImage *)lineImageWithColor:(UIColor *)lineColor {
CGRect rect = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 0.5);
UIGraphicsBeginImageContext(rect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(ctx, lineColor.CGColor);
CGContextFillRect(ctx, rect);
UIImage *lineImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return lineImage;
}
当然,如果想要去除黑线,只需要将shadowImage也设置未空白图片就可以了
2.去除或者改变navigationbar底部黑线
原理类似,直接上代码吧
[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationBar setShadowImage:[self.navigationBar lineImageWithColor:[UIColor colorWithHexString:@"#fb9966"]]];
至于导航栏比较多变,这一点完全可以隐藏掉系统的导航栏,自己做一个就行了