如何将RGB十六进制字符串转换为目标c中的UIColor?

前端之家收集整理的这篇文章主要介绍了如何将RGB十六进制字符串转换为目标c中的UIColor?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有来自url数据的颜色值就是这样,“#ff33cc”.如何将此值转换为UIColor?我正在尝试使用以下代码行.我没有获得baseColor1的值.看起来我应该把那个磅的字符关掉.还有另一种做法吗?
NSScanner *scanner2 = [NSScanner scannerWithString:@"#ff33cc"];
int baseColor1;
[scanner2 scanHexInt:&baseColor1]; 
CGFloat red = (baseColor1 & 0xFF0000);
[UIColor colorWithRed:red ...

解决方法

你很近,但是 colorWithRed:green:blue:alpha:希望值范围从0.0到1.0,所以你需要将位移动255.0f:
CGFloat red   = ((baseColor1 & 0xFF0000) >> 16) / 255.0f;
CGFloat green = ((baseColor1 & 0x00FF00) >>  8) / 255.0f;
CGFloat blue  =  (baseColor1 & 0x0000FF) / 255.0f;

编辑 – NSScanner的scanHexInt也将跳过十六进制字符串前面的0x,但我不认为它会跳过十六进制字符串前面的#个字符.您可以添加此行来处理:

[scanner2 setCharactersToBeSkipped:[NSCharacterSet symbolCharacterSet]];

猜你在找的CSS相关文章