iOS 使用CAGradientLayer创建色彩渐变

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

iOS 使用CAGradientLayer创建色彩渐变_第1张图片
无渐变效果图.png
iOS 使用CAGradientLayer创建色彩渐变_第2张图片
添加渐变后

下面继续我们的操作,创建渐变layer:

 CAGradientLayer *gradientLayer = [CAGradientLayer layer];

gradientLayer.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight/2);

要说明的一点,我们添加gradientLayer需要添加给label的背景view,我们来看一下层级结构

iOS 使用CAGradientLayer创建色彩渐变_第3张图片
层级结构

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

iOS 使用CAGradientLayer创建色彩渐变_第4张图片
直接添加效果图.png

目前本人的解决方案就是给上层控件添加一个背景控件,应该不是最好的办法,如果哪位童鞋有更好的解决办法,请评论给我,不胜感激!!!下面是主要代码:

    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在这里。

你可能感兴趣的:(iOS 使用CAGradientLayer创建色彩渐变)