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

iOS 导航栏设置渐变背景色

作者: 墨守青城 | 来源:发表于2018-11-08 18:04 被阅读24次

今天遇到一个为导航栏设置渐变背景色的需求,直接设置肯定是不行的了。所以采取曲线救国的政策。
思路:1. 先创建一个渐变背景色的UIView
2.再将UIView转成UIImage
3. 最后将转成的UIImage设置成UINavigationBar的背景图片即可。

思路明确了,剩下的就是码代码了。
关键代码如下,在UIView的category里增加两个方法:

  • (void)addGradualLayerWithColors:(NSArray *)colors {
    if (colors == nil && colors.count == 0) {
    return;
    }

    CAGradientLayer *_gradientLayer = [CAGradientLayer layer];
    _gradientLayer.startPoint = CGPointMake(1, 0);//第一个颜色开始渐变的位置
    _gradientLayer.endPoint = CGPointMake(0, 1);//最后一个颜色结束的位置
    _gradientLayer.frame = self.bounds;//设置渐变图层的大小
    _gradientLayer.colors = colors;
    [self.layer insertSublayer:_gradientLayer atIndex:0];
    }

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

完美解决。

相关文章

网友评论

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

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