美文网首页
根据颜色获取对应的RGB值

根据颜色获取对应的RGB值

作者: Mark_Guan | 来源:发表于2017-04-05 23:45 被阅读272次

    在封装我的小框架( ZPSegmentBarOC )的时候需要根据颜色来获取对应的RGB值,从而达到颜色有渐变的效果,我从网上找了很多资料,在这里记录下:

    方法一

    /**
     获取颜色的RGB值
    
     @param components RGB数组
     @param color 颜色
     */
    - (void)getRGBComponents:(CGFloat [3])components forColor:(UIColor *)color {
        CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
        unsigned char resultingPixel[4];
        CGContextRef context = CGBitmapContextCreate(&resultingPixel,
                                                     1,
                                                     1,
                                                     8,
                                                     4,
                                                     rgbColorSpace,
                                                     kCGImageAlphaNoneSkipLast);
        CGContextSetFillColorWithColor(context, [color CGColor]);
        CGContextFillRect(context, CGRectMake(0, 0, 1, 1));
        CGContextRelease(context);
        CGColorSpaceRelease(rgbColorSpace);
        
        for (int component = 0; component < 3; component++) {
            components[component] = resultingPixel[component] / 255.0f;
        }
    }
    

    在使用的时候,我们只需要:

    CGFloat components[3];
    [self getRGBComponents:components forColor:[UIColor blackColor]];
    NSLog(@"%f %f %f", components[0], components[1], components[2]);
    

    即可获取RGB的值;

    参考: stackoverflow

    方法二

    - (NSArray *)getRGBWithColor:(UIColor *)color
    {
        CGFloat red = 0.0;
        CGFloat green = 0.0;
        CGFloat blue = 0.0;
        CGFloat alpha = 0.0;
        [color getRed:&red green:&green blue:&blue alpha:&alpha];
        return @[@(red), @(green), @(blue), @(alpha)];
    }
    

    在使用的时候我们只需要将对应的颜色传入进去即可,该方法就会给我们返回一个数组,里面包括了RGB还有Alpha,较方法一更为简便;

    相关文章

      网友评论

          本文标题: 根据颜色获取对应的RGB值

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