+ (UIColor *)colorFromHex:(unsigned long)hex
{
return [UIColor colorWithRed:((float)((hex & 0xFF0000) >> 16))/255.0 green:((float)((hex & 0xFF00) >> 8))/255.0 blue:((float)(hex & 0xFF))/255.0 alpha:1.0];
}
这是我的职责
我将“查看颜色”设置为THis:
[self.view setBackgroundColor:[UIColor colorFromHex:0x8a32cb]];
现在的问题是:
我在plist文件中从服务器获取颜色代码
就像pdColor:#8a32cb
我这样分开:
NSString *pdColor;
pdColor = [(NSString *)[temp objectForKey:@"pdColor"] stringByReplacingOccurrencesOfString:@"#" withString:@"0x"];
pdCOlor是字符串格式。
我需要在这里应用它:
[self.view setBackgroundColor:[UIColor colorFromHex:pdColor]];
但是它是无符号的,所以没有正确的颜色代码。
请帮我解决这个问题。
最佳答案
您不需要stringByReplacingOccurrencesOfString
。
可以使用strtoul()
将十六进制字符串转换为数字。请注意+ 1
跳过初始"#
字符:
NSString *pdColor = [temp objectForKey:@"pdColor"]; // The string "#8a32cb"
unsigned long color = strtoul([pdColor UTF8String] + 1, NULL, 16);
[self.view setBackgroundColor:[UIColor colorFromHex:color]];