12

HEX値からUIColorを作成したい。しかし、私の色はNSStringです。だから私はこのソリューションを実装します: 16進文字列からUIColorを作成するにはどうすればよいですか?

コード:

#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

そして、私は(単純化して)持っています:

NSString *myString = [[NSString alloc] initWithString:@"0xFFFFFF"];

したがって、マクロを呼び出したい場合:

UIColor *myColor = UIColorFromRGB(myString);

エラーが発生しました:invalid operands to binary expression ('NSString *' and 'int')

だから私はintを渡さなければならないことを知っていますが、この場合NSStringをintに変換する方法は?もちろん[myString intValue];、ここでは機能しません。

4

2 に答える 2

19

次のように、マクロを16進整数で直接使用することができます。

UIColorFromRGB(0xff4433)

または、次のように16進文字列を整数に解析できます。

unsigned colorInt = 0;
[[NSScanner scannerWithString:hexString] scanHexInt:&colorInt];
UIColorFromRGB(colorInt)
于 2012-04-24T12:00:15.513 に答える
5

あなたはそれを標準として行うことはできませんが、それを行うための方法がある私のカテゴリーをチェックしてください。UIColor

定義したマクロは、RGB形式でパックされた整数であると想定しています。文字列を渡しています。そのため、文字列が機能していません。

于 2012-04-24T12:00:14.030 に答える