美文网首页
iOS设置导航栏背景颜色为渐变色

iOS设置导航栏背景颜色为渐变色

作者: 要成为灰太狼的男人 | 来源:发表于2018-05-03 16:11 被阅读0次

    在项目开发中有时候会遇到需要设置导航栏为渐变色的要求,第一个反应是设置navigationBar的BackgroundImage背景图片:

    
    [self.navigationBar setBackgroundImage:[UIImageimageNamed:@"icon_nav_bar_back"]forBarPosition:UIBarPositionAnybarMetrics:UIBarMetricsDefault];
    
    

    但是这样做之后发现在手机上会出现图片不对的情况,要不就是铺不满,要不就是只占用了图片的一半左右的大小。后来通过查阅和咨询觉得可以换一种思路:自己绘制一张同等大小的渐变色图片:

    1、先创建一张渐变色UIView:

    
    UIView*backView = [[UIViewalloc]initWithFrame:CGRectMake(0,0, kScreenWidth,64)];CAGradientLayer*gradientLayer = [CAGradientLayerlayer];gradientLayer.colors = @[(__bridgeid)KCOLOR_base_blue.CGColor, (__bridgeid)KRGBHEXCOLOR(0x42A2F5).CGColor, (__bridgeid)KRGBHEXCOLOR(0x43BDF5).CGColor];gradientLayer.locations = @[@0.3, @0.5, @1.0];gradientLayer.startPoint =CGPointMake(0,0);gradientLayer.endPoint =CGPointMake(1.0,0);gradientLayer.frame = backView.frame;[backView.layer addSublayer:gradientLayer];
    
    

    2、将创建的渐变色UIView转换成Image

    
    -(UIImage*)convertViewToImage:(UIView*)v{CGSizes = v.bounds.size;// 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需 要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了UIGraphicsBeginImageContextWithOptions(s,YES, [UIScreenmainScreen].scale); [v.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage*image =UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();returnimage;}
    
    

    3、将转换成的Image赋给navigationBar的背景图

    
    [self.navigationBar setBackgroundImage:[selfconvertViewToImage:backView] forBarMetrics:UIBarMetricsDefault];
    
    

    此方法是参考小伙伴的原文链接在这里:iOS设置导航条颜色为渐变效果 - 简书

    相关文章

      网友评论

          本文标题:iOS设置导航栏背景颜色为渐变色

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