Hatena::Groupiphone-dev

exisの日記

2009-04-05RGB から UIColor への変換

iPhone Cookbook やネットを参考にして #123456 の RGB値からUIColor を作るのを次のようにやっています。

最初は Wall Calendar で表示しているマイカレンダーの色は Google Calendar の API が返す値を使用していたのですが、API が返す値はブラウザで見える色よりも、かなり濃い色のため結局対応表を作って、ブラウザで見る色と同じにしています。

#import <Foundation/Foundation.h>

@interface UIColor (Hex)
- (UIColor *) initWithHex:(NSString *)hexString alpha:(CGFloat)alpha;
@end

@implementation UIColor (Hex)
- (UIColor *) initWithHex:(NSString *)string alpha:(CGFloat)alpha {
    UIColor *color = nil;
    if (string && [string length] == 7) {
        NSString *colorString = [NSString stringWithFormat:
                                    @"0x%@ 0x%@ 0x%@", 
                                    [string substringWithRange:NSMakeRange(1, 2)],
                                    [string substringWithRange:NSMakeRange(3, 2)],
                                    [string substringWithRange:NSMakeRange(5, 2)]];
        
        unsigned red, green, blue;
        NSScanner *scanner = [NSScanner scannerWithString:colorString];
        if ([scanner scanHexInt:&red] && [scanner scanHexInt:&green] && [scanner scanHexInt:&blue]) {
            color = [[UIColor alloc] initWithRed:(float)red / 0xff
                                           green:(float)green / 0xff
                                            blue:(float)blue / 0xff
                                           alpha:alpha];
        }
    }
    return color;
}

gist にもあげてあります。

http://gist.github.com/89774

ゲスト



トラックバック - http://iphone-dev.g.hatena.ne.jp/exis/20090405