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

  • 相关阅读:
    第04组 Beta冲刺 (2/5)
    第04组 Beta冲刺 (1/6)
    第04组 Alpha冲刺 总结
    二叉树的递归与非递归
    各类典例模板
    选择题合辑2
    运算符重载
    链表题目
    集合的模拟实现(类模板)
    2018Final静态成员(黑名单)
  • 原文地址:https://www.cnblogs.com/shujucn/p/7481453.html
Copyright © 2020-2023  润新知