2014年1月16日木曜日

[iOS][Objective-C] hexのカラーコード文字列からUIColorを得る


どうも。

手始めの覚え書き。

デザイナーは色をhexで指定してくることが多い。
ので、
何らかの形で、
それを変換してやる必要があったりする(´・ω・`)

utilみたいなクラスに置いておくか、
UIColorのカテゴリにするとか、
汎用化する方法はいくつかあるけど、
とりあえずutilクラスにクラスメソッドとして実装するとすれば…。

// 16進の文字列からUIColorを得る
+ (UIColor *)colorWithHexString:(NSString *)hex alpha:(CGFloat)alpha {
    
    NSScanner *colorScanner = [NSScanner scannerWithString:hex];
    
    unsigned int color;
    
    if (![colorScanner scanHexInt:&color]) {
        
        return nil;
    }
    
    CGFloat R = ((color & 0xFF0000) >> 16) / 255.0f;
    CGFloat G = ((color & 0x00FF00) >> 8) / 255.0f;
    CGFloat B = (color & 0x0000FF) / 255.0f;
    
    return [UIColor colorWithRed:R green:G blue:B alpha:alpha];

}


http://sumihiro3.blog.fc2.com/blog-entry-13.html
のようなサービスもあるけど、
アプリを一本作っていく過程で、
毎度毎度変換をかましているのでは、
疲れるし、

[UIColor colorWithRed:0.9255f green:0.3059f blue:0.8353f alpha:1.0000f];

のようなコードが散在するのでは、
ソースのメンテナンス性も落ちる。

デザイナーとのI/Fという意味でも、
16進で指定できる方法を持っておく方がよさそう。



それでは。
ちゃお☆


まこぴー。