我有来自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]];