使用CAGradientLayer
我们可以很方便的生成两色或多色渐变。CAGradientLayer
是CoreAnimation
中的一个类,使用它可以帮助我们生成过渡平滑的渐变效果。
我们先来看一下不添加渐变和添加渐变时的效果,方便后面作对比:


下面继续我们的操作,创建渐变layer:
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight/2);
要说明的一点,我们添加gradientLayer需要添加给label的背景view,我们来看一下层级结构

如果直接将gradientLayer添加给label,那么会出现下面的情况:

目前本人的解决方案就是给上层控件添加一个背景控件,应该不是最好的办法,如果哪位童鞋有更好的解决办法,请评论给我,不胜感激!!!下面是主要代码:
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = CGRectMake(0, -200, kScreenWidth, kScreenHeight/2);
gradientLayer.masksToBounds = YES;
[self.layer addSublayer:gradientLayer];
//设置渐变色开始点
gradientLayer.startPoint = CGPointMake(0, 0);
//设置渐变色结束点
gradientLayer.endPoint = CGPointMake(0, 1);
//添加渐变色,可以是多种,看自己需要
gradientLayer.colors = @[(__bridge id)[UIColor clearColor].CGColor,
(__bridge id)[UIColor blackColor].CGColor];
//设置渐变色过渡,“从哪里到哪里”
gradientLayer.locations = @[@(0.0f), @(1.0f)];
return gradientLayer;
实际项目当中,我是直接创建了一个category,方便直接调用,demo在这里。
网友评论