IOS中将十进制色值转换成UIColor
最近因项目需要,在网上找了一些代码,整合了一下,实现的效果就是将10进制的RGB色值转换IOS用的UIColor,方法还有缺陷,有待改进
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
UIColor *getColorFromString(NSString *colorString) { int colorInt=[colorString intValue]; if(colorInt<0) return [UIColor whiteColor]; NSString *nLetterValue; NSString *colorString16 =@""; int ttmpig; for (int i = 0; i<9; i++) { ttmpig=colorInt%16; colorInt=colorInt/16; switch (ttmpig) { case 10: nLetterValue =@"A";break; case 11: nLetterValue =@"B";break; case 12: nLetterValue =@"C";break; case 13: nLetterValue =@"D";break; case 14: nLetterValue =@"E";break; case 15: nLetterValue =@"F";break; default:nLetterValue=[[NSString alloc]initWithFormat:@"%i",ttmpig]; } colorString16 = [nLetterValue stringByAppendingString:colorString16]; if (colorInt == 0) break; } colorString16 = [[colorString16 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; //去掉前后空格换行符 // strip 0X if it appears if ([colorString16 hasPrefix:@"0X"]) colorString16 = [colorString16 substringFromIndex:2]; if ([colorString16 hasPrefix:@"#"]) colorString16 = [colorString16 substringFromIndex:1]; // String should be 6 or 8 characters if ([colorString16 length] < 6) { int cc=6-[colorString16 length]; for (int i=0; i<cc; i++) colorString16=[@"0" stringByAppendingString:colorString16]; } if ([colorString16 length] != 6) return [UIColor whiteColor]; // Separate into r, g, b substrings NSRange range; range.location = 0; range.length = 2; NSString *bString = [colorString16 substringWithRange:range]; range.location = 2; NSString *gString = [colorString16 substringWithRange:range]; range.location = 4; NSString *rString = [colorString16 substringWithRange:range]; // Scan values unsigned int r, g, b; [[NSScanner scannerWithString:rString] scanHexInt:&r]; //扫描16进制到int [[NSScanner scannerWithString:gString] scanHexInt:&g]; [[NSScanner scannerWithString:bString] scanHexInt:&b]; return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f]; }