2011-09-17 11 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] 

내 실제 16 진수 값이 0xF2A80C이지만,이 PLIST 파일에 존재한다. 이것을 문자열로 얻을 수 있습니다. 이 경우 어떻게해야합니까?

미리 감사드립니다.

자세한 내용이 궁금하십니까?. 이것에 대해

답변

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

무엇 : 나는 그것을 테스트하지했습니다

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

. 문제가 있으면 알려주십시오.

+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);