+ (UIColor*)colorFromHex:(NSString*)hexString
{
// https://github.com/timd/UIColor-HexValues
hexString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@""];
if ([hexString length] == 3) {
hexString = [NSString stringWithFormat:@"%@%@%@%@%@%@",
[hexString substringWithRange:NSMakeRange(0, 1)],[hexString substringWithRange:NSMakeRange(0, 1)],
[hexString substringWithRange:NSMakeRange(1, 1)],[hexString substringWithRange:NSMakeRange(1, 1)],
[hexString substringWithRange:NSMakeRange(2, 1)],[hexString substringWithRange:NSMakeRange(2, 1)]];
}
if ([hexString length] != 6) {
return nil;
}
// Brutal and not-very elegant test for non hex-numeric characters
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^a-fA-F|0-9]" options:0 error:NULL];
NSUInteger match = [regex numberOfMatchesInString:hexString options:NSMatchingReportCompletion range:NSMakeRange(0, [hexString length])];
if (match != 0) {
return nil;
}
NSRange rRange = NSMakeRange(0, 2);
NSString *rComponent = [hexString substringWithRange:rRange];
NSUInteger rVal = 0;
NSScanner *rScanner = [NSScanner scannerWithString:rComponent];
[rScanner scanHexInt:(unsigned int *)&rVal];
float rRetVal = (float)rVal / 254;
NSRange gRange = NSMakeRange(2, 2);
NSString *gComponent = [hexString substringWithRange:gRange];
NSUInteger gVal = 0;
NSScanner *gScanner = [NSScanner scannerWithString:gComponent];
[gScanner scanHexInt:(unsigned int *)&gVal];
float gRetVal = (float)gVal / 254;
NSRange bRange = NSMakeRange(4, 2);
NSString *bComponent = [hexString substringWithRange:bRange];
NSUInteger bVal = 0;
NSScanner *bScanner = [NSScanner scannerWithString:bComponent];
[bScanner scanHexInt:(unsigned int *)&bVal];
float bRetVal = (float)bVal / 254;
return [UIColor colorWithRed:rRetVal green:gRetVal blue:bRetVal alpha:1.0f];
}
Comments
Post a Comment