美文网首页
iOS 颜色渐变

iOS 颜色渐变

作者: Muz李 | 来源:发表于2018-09-02 14:37 被阅读0次

    iOS里面的背景颜色实现渐变的方式有两种,第一种就是给一个渐变的图片做背景,当然这样有很大的局限性,比如我现在就需要根据项目需求要动态的改变渐变背景色。

    这样首先想到quartz 2D 这里的知识进行绘图,我根据需要在自定义视图里面的drawRect方法进行绘制。

    - (void)drawRect:(CGRect)rect {

    /**

        *  1.通过CAGradientLayer 设置渐变的背景。

        */

    CAGradientLayer*layer = [CAGradientLayernew];

    //colors存放渐变的颜色的数组

    layer.colors=@[(__bridgeid)[UIColorgreenColor].CGColor,(__bridgeid)[UIColorwhiteColor].CGColor];

    /**

        * 起点和终点表示的坐标系位置,(0,0)表示左上角,(1,1)表示右下角

        */

    layer.startPoint =CGPointMake(0.5,0);

    layer.endPoint =CGPointMake(0.5,1);

    layer.frame =self.bounds;

    [self.layer addSublayer:layer];

    /**

        *  方法2.CGGradientRef

        */

    CGContextRefctx =UIGraphicsGetCurrentContext();

    CGColorSpaceRefcolorSpace=CGColorSpaceCreateDeviceRGB();

    /*指定渐变色

        space:颜色空间

        components:颜色数组,注意由于指定了RGB颜色空间,那么四个数组元素表示一个颜色(red、green、blue、alpha),

        如果有三个颜色则这个数组有4*3个元素

        locations:颜色所在位置(范围0~1),这个数组的个数不小于components中存放颜色的个数

        count:渐变个数,等于locations的个数

        */

    CGFloatcompoents[12]={

    0,0,0,1,

    0.8,0.1,0.5,1.0,

    1.0,1.0,1.0,1.0

        };

    //设置渐变的位置

    CGFloatlocations[3]={0,0.3,1.0};

    //创建梯度上下文

    CGGradientRefgradient=CGGradientCreateWithColorComponents(colorSpace, compoents, locations,3);

    /*绘制线性渐变

        context:图形上下文

        gradient:渐变色

        startPoint:起始位置

        endPoint:终止位置

        options:绘制方式,kCGGradientDrawsBeforeStartLocation 开始位置之前就进行绘制,到结束位置之后不再绘制,

        kCGGradientDrawsAfterEndLocation开始位置之前不进行绘制,到结束点之后继续填充

        startPoint endPoint 不同与上一种方法,指的是真正的坐标

        */

    CGContextDrawLinearGradient(ctx, gradient,CGPointMake(self.frame.size.width/2,0),CGPointMake(self.frame.size.width/2,self.frame.size.height), kCGGradientDrawsAfterEndLocation);

    //释放颜色空间

    CGColorSpaceRelease(colorSpace);

    }

    相关文章

      网友评论

          本文标题:iOS 颜色渐变

          本文链接:https://www.haomeiwen.com/subject/ghbtbftx.html