iOS

2013-09-01, ios

単色のUIImageを生成する

HTML(CSS)での色指定によく使う16進数(HEX)形式の色指定から、単色のUIImageを生成するメソッドの例です。「#00ff00」の形式しか想定していませんので、状況に応じてはエラー処理等の追加は必要かと思います。まずは16進数表記の文字列をUIColorに変換し、その色を使ってCGContextに塗りつぶしを指示する、という流れです。画像のサイズは32x32に固定されています。

// hex will be #ff00ff style.
+ (UIImage *)imageWithHexCode:(NSString *)hex {
    NSString *_hex = [hex substringFromIndex:1];

    unsigned int baseValue;
    [[NSScanner scannerWithString:_hex] scanHexInt:&baseValue];

    float red = ((baseValue >> 16) & 0xFF)/255.0f;
    float green = ((baseValue >> 8) & 0xFF)/255.0f;
    float blue = ((baseValue >> 0) & 0xFF)/255.0f;

    UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];

    CGRect rect = CGRectMake(0.0f, 0.0f, 32.0f, 32.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

参考URL

この記事は役に立ちましたか?