美文网首页
iOS 修改导航栏背景色(渐变色)

iOS 修改导航栏背景色(渐变色)

作者: BU二先森 | 来源:发表于2018-07-24 17:44 被阅读0次

iOS 之前修改navigationBar的背景色时,直接修改backgroundColor后会出现一层半透明的白色蒙版,研究之后发现这样做是不合适的。

1、UI直接切图,修改导航栏的背景图片,最简单,但是维护修改麻烦些。

[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbarBackgroundWhite"] forBarMetrics:UIBarMetricsDefault];

2、代码实现,维护时可操作性强,如果界面有横屏,推荐使用第二种方法,因为项目要求做了个渐变色。

CGRect frame = CGRectMake(0, 0, SCREEN_WIDTH, 64);
    
    UIImageView *imgview = [[UIImageView alloc]initWithFrame:frame];
    
    UIGraphicsBeginImageContext(imgview.frame.size);
    
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
    
    CGContextScaleCTM(context, frame.size.width, frame.size.height);
    
    CGFloat colors[] = {
        
        50.0/255.0, 117.0/255.0, 224.0/255.0, 1.0,
        
        63.0/255.0, 163.0/255.0, 238.0/255.0, 1.0,
        
    };
    
    
    CGGradientRef backGradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));
    
    CGColorSpaceRelease(rgb);
    
    //设置颜色渐变的方向,范围在(0,0)与(1.0,1.0)之间,如(0,0)(1.0,0)代表水平方向渐变,(0,0)(0,1.0)代表竖直方向渐变

    CGContextDrawLinearGradient(context, backGradient, CGPointMake(0, 0), CGPointMake(1.0, 0), kCGGradientDrawsBeforeStartLocation);
    
    [self.navigationController.navigationBar setBackgroundImage:UIGraphicsGetImageFromCurrentImageContext()  forBarMetrics:UIBarMetricsDefault];

在这做一下记录 - -

相关文章

网友评论

      本文标题:iOS 修改导航栏背景色(渐变色)

      本文链接:https://www.haomeiwen.com/subject/ynjymftx.html