在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文件中。我可以把它作为一个字符串。在这种情况下我该怎么办?
提前致谢。
您想了解有关此事的任何细节吗?。
答案 0 :(得分:8)
NSScanner *scanner = [NSScanner scannerWithString:hexString];
unsigned hex;
BOOL success = [scanner scanHexInt:&hex];
UIColor *color = UIColorFromRGB(hex);
答案 1 :(得分:0)
这个怎么样:
NSString *textValue = @"0xF2A80C";
long long value = [textValue longLongValue];
UIColor *color = UIColorFromRGB(value);
我没有测试过它。如果有问题,请报告我。
答案 2 :(得分:0)
您可以使用旧的C函数strtol,以16为基础。
const char* cString = [myStr cStringUsingEncoding:[NSString defaultCStringEncoding]];
int hexValue = (int)strtol(cString, NULL, 16);
UIColor *color = UIColorFromRGB(hexValue);