iOS 渐变色navigationbar 一个类扩展方法解决渐变色背景

最近渐变色的UI设计越来越多的被采用,所以玩一下记录一下。

iOS 渐变色navigationbar 一个类扩展方法解决渐变色背景_第1张图片
效果

这里使用的是CAGradientLayer(梯度渐变图层)

参数介绍

1.startPoint  和 endPoint 

颜色开始渐变的位置和渐变结束的位置,用来控制颜色渐变的方向.方向是由起始坐标指向结束坐标

例如:_gradientLayer.startPoint=CGPointMake(1,0);

        _gradientLayer.endPoint=CGPointMake(0,1); 

         就是右上角指向左下角

iOS 渐变色navigationbar 一个类扩展方法解决渐变色背景_第2张图片

2.frame    用来设置渐变图层的大小

3.colors   类型是数组,用来设置渐变的颜色组,CGColor类型

4.locations 数组,可为空,传NSnumber类型的数字 0 ~ 1,用来控制颜色占比

设置分类方法(Category)

因为控件都是UIView子类,为了方便以后调用,所以我们选择UIView分类方法


iOS 渐变色navigationbar 一个类扩展方法解决渐变色背景_第3张图片

设置导航栏navigationBar

思路:新建一个Contoller继承UINavigationController ,在这个新建的controller里做设置,对navigationbar调用刚刚写的类扩展方法就设置完成了,而且还可以方便使用。

在实现过程中,遇到了一个问题,只对navigationbar设置的话,状态栏不会跟着导航栏变色。场面一度尴尬

解决方案:添加一个View在navigationbar上,该View的高度为导航栏+状态栏高度,用来盖住状态栏的背景。

代码如下


iOS 渐变色navigationbar 一个类扩展方法解决渐变色背景_第4张图片

2017年7月25 问题优化

问题:使用以上代码会出现barBackgroundView 盖住navigationBar上的title和item的情况

解决:新增UIView转UIImage方法


iOS 渐变色navigationbar 一个类扩展方法解决渐变色背景_第5张图片

1.通过该方法把barBackgroundView转成图片

2.[self.navigationBar setBackgroundImage:(nullable UIImage *) forBarMetrics:(UIBarMetrics)]设置背景图片可解决被盖住的问题

Demo下载地址: https://github.com/ForeverWater/WYGColorChange.git

你可能感兴趣的:(iOS 渐变色navigationbar 一个类扩展方法解决渐变色背景)