Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将十六进制值从字符串转换为十六进制颜色代码_Objective C_Cocoa_Macros_Plist_Uicolor - Fatal编程技术网

Objective c 将十六进制值从字符串转换为十六进制颜色代码

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

在Objective-C xcode项目中,我有一个plist文件,它将整数与十六进制颜色代码关联起来。动态地,我想从plist文件中使用此颜色代码,并将该十六进制值传递给以下宏,以获得
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);