RGBA(赤、緑、青、アルファ)の値があります。これらに基づいてUIColor値を取得できることはわかっています。
UIColor *currentColor = [UIColor colorWithRed: 1 green:1 blue:0 alpha:1];
しかし、iOSのRGBA値を使用して色の16進コード文字列を直接取得できる方法はありますか?
RGBA(赤、緑、青、アルファ)の値があります。これらに基づいてUIColor値を取得できることはわかっています。
UIColor *currentColor = [UIColor colorWithRed: 1 green:1 blue:0 alpha:1];
しかし、iOSのRGBA値を使用して色の16進コード文字列を直接取得できる方法はありますか?
UIColorオブジェクトから16進文字列を直接取得できるとは思いません。UIColorオブジェクトから赤、緑、青のコンポーネントを取得し、それらを16進数に変換して追加する必要があります。
あなたはいつでもこのようなものを作成することができます
-(NSString *) UIColorToHexString:(UIColor *)uiColor{
CGColorRef color = [uiColor CGColor];
int numComponents = CGColorGetNumberOfComponents(color);
int red,green,blue, alpha;
const CGFloat *components = CGColorGetComponents(color);
if (numComponents == 4){
red = (int)(components[0] * 255.0) ;
green = (int)(components[1] * 255.0);
blue = (int)(components[2] * 255.0);
alpha = (int)(components[3] * 255.0);
}else{
red = (int)(components[0] * 255.0) ;
green = (int)(components[0] * 255.0) ;
blue = (int)(components[0] * 255.0) ;
alpha = (int)(components[1] * 255.0);
}
NSString *hexString = [NSString stringWithFormat:@"#%02x%02x%02x%02x",
alpha,red,green,blue];
return hexString;
}
編集: iOS 5.0では、赤、緑、青のコンポーネントを非常に簡単に取得できます。
CGFloat red,green,blue,alpha;
[uicolor getRed:&red green:&green blue:&blue alpha:&alpha]
したがって、上記の関数は次のように変更できます。
-(NSString *) UIColorToHexString:(UIColor *)uiColor{
CGFloat red,green,blue,alpha;
[uiColor getRed:&red green:&green blue:&blue alpha:&alpha]
NSString *hexString = [NSString stringWithFormat:@"#%02x%02x%02x%02x",
((int)alpha),((int)red),((int)green),((int)blue)];
return hexString;
}
NSString
次のコードを使用して、float値をに変換できます。
float r = 0.5, g = 1.0, b = 1.0, a = 1.0;
NSString *s = [[NSString alloc] initWithFormat: @"%02x%02x%02x%02x",
(int) (r * 255), (int) (g * 255), (int) (b * 255), (int) (a * 255)];
NSLog(@"%@", s);
色の値を手動で16進数に変換できます。とても簡単です。あなたが色の価値を持っているなら言う
float redValue = 0.5;
対応する16進値は次のように計算できます。
redValue*=255;
NSString *hex = [NSString stringWithFormat:@"%02x",(int)redValue];