zoukankan      html  css  js  c++  java
  • ObjectC&&Swift 渐变色算法实现

    -(NSArray *)getGradientColorWithStartColor:(UIColor *)startColor endColor:(UIColor *)endColor step:(NSInteger)step inverse:(BOOL)inverse {
        //1 get start color rgb
        CGFloat startR = 0.0, startG = 0.0, startB = 0.0;
        CGColorRef startColorRGB = [startColor CGColor];
        NSInteger startNumComponents = CGColorGetNumberOfComponents(startColorRGB);
        if (startNumComponents == 4)
        {
            const CGFloat *components = CGColorGetComponents(startColorRGB);
            startR = components[0];
            startG = components[1];
            startB = components[2];
        }
        //2 get end color rgb
        CGFloat endR = 0.0, endG = 0.0, endB = 0.0;
        CGColorRef endColorRGB = [endColor CGColor];
        NSInteger endNumComponents = CGColorGetNumberOfComponents(endColorRGB);
        if (endNumComponents == 4)
        {
            const CGFloat *components = CGColorGetComponents(endColorRGB);
            endR = components[0];
            endG = components[1];
            endB = components[2];
        }
        //3 calculate total threshold by step
        CGFloat stepR = 0.0, stepG = 0.0, stepB = 0.0;
        stepR = step == 1 ? 0 : (endR-startR) / (step - 1);
        stepG = step == 1 ? 0 : (endG-startG) / (step - 1);
        stepB = step == 1 ? 0 : (endB-startB) / (step - 1);
        //calculate uicolor by step
        CGFloat green = startG;
        CGFloat red   = startR;
        CGFloat blue  = startB;
        NSMutableArray *stepColorArray = [[NSMutableArray alloc] initWithCapacity:step];
        for (NSInteger i = 0; i < step - 1; i++) {
            red   = red + stepR;
            green = green + stepG;
            blue  = green + stepB;
            UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:0];
            [stepColorArray addObject:color];
        }
        return stepColorArray;
    }
    

  • 相关阅读:
    用python实现批量替换.doc文件文件内容
    记我是如何通过Security+考试的
    去哪儿笔试羊生羊问题
    CSS作用域问题
    常用的几种清除浮动的方式
    ECE转专业找工作经历-从零电面到facebook offer
    面经-Bloomberg
    题解-Linked List Cycle II
    自我介绍
    解题技巧-发现子结构
  • 原文地址:https://www.cnblogs.com/shujucn/p/7481453.html
Copyright © 2011-2022 走看看