• 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;
    }
    

  • 相关阅读:
    开源项目
    分享知识 学无止境 只做正确的事 伸出援助之手
    公开支持与鼓励,私下质疑与建议(转)
    天使投资人给阿里新贵们的一些建议(转)
    沟通中“倾听”的五个层次
    intent
    SafeNet推出行业首款白盒password软件保护解决方式
    应用系统设计思考
    常见的几种RuntimeException
    ASP.NETserver控件使用之Reportviewer 报表
  • 原文地址:https://www.cnblogs.com/shujucn/p/7481453.html
Copyright © 2020-2023  润新知