スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]16進数の色をUIColorへ変換する

「#」から始まる6ケタの16進数数値で指定するタイプの色指定を、UIColorへ変換するメソッドです。
また、redColorやblueColorの指定も可能です。

//defineはメソッド内で利用する
#define RGBA(r, g, b, a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]
#define CArrayCount(arr) sizeof arr / sizeof arr[0]

+ (UIColor *)colorValueFromNSString:(NSString *)color_string alpha:(float)alpha{
UIColor *return_color = RGBA(0, 0, 0, 0);
NSMutableString *color_name = [NSMutableString stringWithString:color_string];
if([[color_name substringToIndex:1] isEqualToString:@"#"]){
[color_name deleteCharactersInRange:NSMakeRange(0, 1)];
NSMutableArray *color_array = [NSMutableArray array];
NSLog(@"[color_name length]:%d",[color_name length]);
NSLog(@"color_name:%@",color_name);
for(int i=0;i<[color_name length];i++){
[color_array addObject:[color_name substringWithRange:NSMakeRange(i, 1)]];
NSLog(@"color_name %d:%@",i,[color_name substringWithRange:NSMakeRange(i, 1)]);
}
while([color_array count] <= 6){
[color_array addObject:@"0"];
}
unsigned int result = 0;
int color[3];
for(int i=0;i<CArrayCount(color);i++){
NSString *color_int = [[color_array objectAtIndex:i*2] stringByAppendingString:[color_array objectAtIndex:(i*2)+1]];
[[NSScanner scannerWithString:color_int] scanHexInt:&result];
color[i] = result;
}
return_color = RGBA(color[0], color[1], color[2], alpha);
NSLog(@"bg-color:RGBA(%d,%d,%d,%f)",color[0], color[1], color[2],alpha);
}else{
if([color_name isEqualToString:@"blackColor"]){
return_color = [UIColor blackColor];
}else if([color_name isEqualToString:@"darkGrayColor"]){
return_color = [UIColor darkGrayColor];
}else if([color_name isEqualToString:@"lightGrayColor"]){
return_color = [UIColor lightGrayColor];
}else if([color_name isEqualToString:@"whiteColor"]){
return_color = [UIColor whiteColor];
}else if([color_name isEqualToString:@"grayColor"]){
return_color = [UIColor grayColor];
}else if([color_name isEqualToString:@"redColor"]){
return_color = [UIColor redColor];
}else if([color_name isEqualToString:@"greenColor"]){
return_color = [UIColor greenColor];
}else if([color_name isEqualToString:@"blueColor"]){
return_color = [UIColor blueColor];
}else if([color_name isEqualToString:@"cyanColor"]){
return_color = [UIColor cyanColor];
}else if([color_name isEqualToString:@"yellowColor"]){
return_color = [UIColor yellowColor];
}else if([color_name isEqualToString:@"magentaColor"]){
return_color = [UIColor magentaColor];
}else if([color_name isEqualToString:@"orangeColor"]){
return_color = [UIColor orangeColor];
}else if([color_name isEqualToString:@"purpleColor"]){
return_color = [UIColor purpleColor];
}else if([color_name isEqualToString:@"brownColor"]){
return_color = [UIColor brownColor];
}else if([color_name isEqualToString:@"clearColor"]){
return_color = [UIColor clearColor];
}
}
return return_color;
}


利用は以下のようにします。
//Sampleクラスに実装したと仮定します。
UIColor *color = [SamplecolorValueFromNSString:@"#FF0000" alpha:1.0f];
//こっちはデフォルトの色指定を利用します。アルファの指定に意味はありません。
UIColor *color2 = [SamplecolorValueFromNSString:@"redColor" alpha:1.0f];
このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。