Objective c 将十六进制值从字符串转换为十六进制颜色代码
在Objective-C xcode项目中,我有一个plist文件,它将整数与十六进制颜色代码关联起来。动态地,我想从plist文件中使用此颜色代码,并将该十六进制值传递给以下宏,以获得Objective c 将十六进制值从字符串转换为十六进制颜色代码,objective-c,cocoa,macros,plist,uicolor,Objective C,Cocoa,Macros,Plist,Uicolor,在Objective-C xcode项目中,我有一个plist文件,它将整数与十六进制颜色代码关联起来。动态地,我想从plist文件中使用此颜色代码,并将该十六进制值传递给以下宏,以获得UIColor对象 宏: #define UIColorFromRGB(rgbValue) [UIColor \ colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \ green:((float)((rgbValue &am
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]
我需要传递给这个宏的实际十六进制值是0xF2A80C,但它存在于plist文件中。我可以把这个当作一个字符串。在这种情况下我该怎么办
提前谢谢
您想了解有关这方面的详细信息吗?这方面如何:
NSString *textValue = @"0xF2A80C";
long long value = [textValue longLongValue];
UIColor *color = UIColorFromRGB(value);
我没有测试过。因此,如果有问题,请报告我。您可以使用以16为基数的好的旧C函数
const char* cString = [myStr cStringUsingEncoding:[NSString defaultCStringEncoding]];
int hexValue = (int)strtol(cString, NULL, 16);
UIColor *color = UIColorFromRGB(hexValue);
嗨,奈克托,我试过你的解决办法。但它不起作用。它的颜色一直是黑色的。但Jano的解决方案对我很有效。无论如何,感谢您的建议。
if(!success)NSLog(@“您的十六进制字符串无效”)代码>好了!
NSScanner *scanner = [NSScanner scannerWithString:hexString];
unsigned hex;
BOOL success = [scanner scanHexInt:&hex];
UIColor *color = UIColorFromRGB(hex);