最近渐变色的UI设计越来越多的被采用,所以玩一下记录一下。
这里使用的是CAGradientLayer(梯度渐变图层)
参数介绍
1.startPoint 和 endPoint
颜色开始渐变的位置和渐变结束的位置,用来控制颜色渐变的方向.方向是由起始坐标指向结束坐标
例如:_gradientLayer.startPoint=CGPointMake(1,0);
_gradientLayer.endPoint=CGPointMake(0,1);
就是右上角指向左下角
2.frame 用来设置渐变图层的大小
3.colors 类型是数组,用来设置渐变的颜色组,CGColor类型
4.locations 数组,可为空,传NSnumber类型的数字 0 ~ 1,用来控制颜色占比
设置分类方法(Category)
因为控件都是UIView子类,为了方便以后调用,所以我们选择UIView分类方法
设置导航栏navigationBar
思路:新建一个Contoller继承UINavigationController ,在这个新建的controller里做设置,对navigationbar调用刚刚写的类扩展方法就设置完成了,而且还可以方便使用。
在实现过程中,遇到了一个问题,只对navigationbar设置的话,状态栏不会跟着导航栏变色。场面一度尴尬
解决方案:添加一个View在navigationbar上,该View的高度为导航栏+状态栏高度,用来盖住状态栏的背景。
代码如下
2017年7月25 问题优化
问题:使用以上代码会出现barBackgroundView 盖住navigationBar上的title和item的情况
解决:新增UIView转UIImage方法
1.通过该方法把barBackgroundView转成图片
2.[self.navigationBar setBackgroundImage:(nullable UIImage *) forBarMetrics:(UIBarMetrics)]设置背景图片可解决被盖住的问题
Demo下载地址: https://github.com/ForeverWater/WYGColorChange.git