diff --git a/UIColor/UIColor+Expanded.h b/UIColor/UIColor+Expanded.h index 19824bf..cb5f17f 100755 --- a/UIColor/UIColor+Expanded.h +++ b/UIColor/UIColor+Expanded.h @@ -70,6 +70,7 @@ // Color builders + (UIColor *)randomColor; + (UIColor *)colorWithString:(NSString *)stringToConvert; ++ (UIColor *)colorWithRGBString:(NSString *)stringToConvert;//added by ysc + (UIColor *)colorWithRGBHex:(UInt32)hex; + (UIColor *)colorWithHexString:(NSString *)stringToConvert; + (UIColor *)colorWithName:(NSString *)cssColorName; diff --git a/UIColor/UIColor+Expanded.m b/UIColor/UIColor+Expanded.m index d4b123a..3aa8e4c 100755 --- a/UIColor/UIColor+Expanded.m +++ b/UIColor/UIColor+Expanded.m @@ -538,6 +538,41 @@ + (UIColor *)colorWithString:(NSString *)stringToConvert { return color; } +///////////////////added by ysc////////////////////////////////////////////////////////////// ++ (UIColor *)colorWithRGBString:(NSString *)stringToConvert { + NSScanner *scanner = [NSScanner scannerWithString:stringToConvert]; + if (![scanner scanString:@"{" intoString:NULL]) return nil; + const NSUInteger kMaxComponents = 4; + CGFloat c[kMaxComponents]; + NSUInteger i = 0; + if (![scanner scanFloat:&c[i++]]) return nil; + while (1) { + if ([scanner scanString:@"}" intoString:NULL]) break; + if (i >= kMaxComponents) return nil; + if ([scanner scanString:@"," intoString:NULL]) { + if (![scanner scanFloat:&c[i++]]) return nil; + + } else { + // either we're at the end of there's an unexpected character here + // both cases are error conditions + return nil; + } + } + if (![scanner isAtEnd]) return nil; + UIColor *color; + switch (i) { + case 2: // monochrome + color = [UIColor colorWithWhite:c[0] alpha:c[1]]; + break; + case 3: // RGB + color = [UIColor colorWithRed:c[0] / 255.0f green:c[1] / 255.0f blue:c[2] / 255.0f alpha:1.0f]; + break; + default: + color = nil; + } + return color; +} + #pragma mark Class methods ///////////////////////////////////////////////////////////////////////////////////////////////////