美文网首页
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