2011-09-17 24 views
2

Objective-C xcodeプロジェクトでは、16進数のコードに整数を関連付けるplistファイルがあります。動的にplistファイルからこのカラーコードを使用し、その16進値を次のマクロに渡してUIColorオブジェクトを取得します。16進数の値を文字列から16進数のカラーコードに変換する

マクロ:私はこのマクロに渡す必要

#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] 

私の実際の進値は0xF2A80Cあるが、それはplistファイルに存在しています。私はこれを文字列として得ることができます。この場合、どうすればいいですか?

ありがとうございます。

この詳細についてご希望ですか?私はそれをテストしていませんでした

NSString *textValue = @"0xF2A80C"; 
long long value = [textValue longLongValue]; 
UIColor *color = UIColorFromRGB(value); 

:これについて何

答えて

8
NSScanner *scanner = [NSScanner scannerWithString:hexString]; 
unsigned hex; 
BOOL success = [scanner scanHexInt:&hex]; 
UIColor *color = UIColorFromRGB(hex); 
+1

こんにちはJanoありがとう。このソリューションは私のために働いた。 – durai

+0

成功がコードで使われていない理由..? – NANNAV

+0

'if(!success)NSLog(@"あなたの16進文字列は無効です ");'これで行く! – Jano

0

。だから問題がある場合は私に報告してください。

+0

こんにちはNekto、私はあなたのソリューションを試してみました。しかし、それは動作しませんでした。色は常に黒色だった。しかし、Janoの解決策は私のために働いた。とにかくあなたの提案に感謝します。 – durai

+0

あなたは大歓迎です。 – Nekto

0

よく古いC関数strtolをベースとして16を使用できます。

const char* cString = [myStr cStringUsingEncoding:[NSString defaultCStringEncoding]]; 
int hexValue = (int)strtol(cString, NULL, 16); 
UIColor *color = UIColorFromRGB(hexValue); 
関連する問題