強火で進め

このブログではプログラム関連の記事を中心に書いてます。

UIColorをccc4()用の形式に変換する方法

UIColorからr,g,b,aの要素を取り出す。次にUIColorは0〜1、ccc4()は0〜255と使用している値の範囲が異なるのでUIColorから取得した値を * 255 する。

    UIColor *color = [UIColor colorWithRed:1.0f green:0.5f blue:0.25f alpha:0.3f];
//    UIColor *color = [UIColor grayColor];
    const CGFloat *c = CGColorGetComponents(color.CGColor);
    GLubyte r, g, b, a;
    
    r = round(c[0] * 255.0);
    // kCGColorSpaceModelMonochrome の場合は c[0] にしかデータが入っていない
    // アルファ値は round(CGColorGetAlpha(color.CGColor) * 255.0) でも取得可能;
    if (CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)) == kCGColorSpaceModelMonochrome) {
        g = round(c[0] * 255.0);
        b = round(c[0] * 255.0);
        a = round(c[1] * 255.0);
    } else {
        g = round(c[1] * 255.0);
        b = round(c[2] * 255.0);
        a = round(c[3] * 255.0);
    }
    NSLog(@"r:%u g:%u b:%u a:%u", r, g, b, a);

参考情報

UIColor-Expanded.m at master from ars/uicolor-utilities - GitHub
https://github.com/ars/uicolor-utilities/blob/master/UIColor-Expanded.m

iphone - Get RGB value from UIColor presets - Stack Overflow
http://stackoverflow.com/questions/4700168/get-rgb-value-from-uicolor-presets