去掉或者改变tabbar顶部以及navigationbar底部的黑线

有的时候因为项目需求,对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"]]];

至于导航栏比较多变,这一点完全可以隐藏掉系统的导航栏,自己做一个就行了

你可能感兴趣的:(去掉或者改变tabbar顶部以及navigationbar底部的黑线)