iOS 中十六进制字符串转化为UIColor

来源:互联网 发布:使用端口命令 tcp 编辑:程序博客网 时间:2024/05/01 05:47
  1. #pragma mark - 颜色转换 IOS中十六进制的颜色转换为UIColor  
  2. + (UIColor *) colorWithHexString: (NSString *)color  
  3. {  
  4.     //去掉字符串首位的空格,并且返回新的字符串
  5.     NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];  
  6.       
  7.     // String should be 6 or 8 characters  
  8.     if ([cString length] < 6) {  
  9.         return [UIColor clearColor];  
  10.     }  
  11.       
  12.     // strip 0X if it appears  
  13.     if ([cString hasPrefix:@"0X"])  
  14.         cString = [cString substringFromIndex:2];  
  15.     if ([cString hasPrefix:@"#"])  
  16.         cString = [cString substringFromIndex:1];  
  17.     if ([cString length] != 6)  
  18.         return [UIColor clearColor];  
  19.       
  20.     // Separate into r, g, b substrings  
  21.     NSRange range;  
  22.     range.location = 0;  
  23.     range.length = 2;  
  24.       
  25.     //r  
  26.     NSString *rString = [cString substringWithRange:range];  
  27.       
  28.     //g  
  29.     range.location = 2;  
  30.     NSString *gString = [cString substringWithRange:range];  
  31.       
  32.     //b  
  33.     range.location = 4;  
  34.     NSString *bString = [cString substringWithRange:range];  
  35.       
  36.     // Scan values  将16进制数转换为10进制  分别存到r,g,b中
  37.     unsigned int r, g, b;  
  38.     [[NSScanner scannerWithString:rString] scanHexInt:&r];  
  39.     [[NSScanner scannerWithString:gString] scanHexInt:&g];  
  40.     [[NSScanner scannerWithString:bString] scanHexInt:&b];  
  41.       
  42.     return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];  
  43. }  
  1. //将UIColor转换为RGB值  
  2. - (NSMutableArray *) changeUIColorToRGB:(UIColor *)color  
  3. {  
  4.     NSMutableArray *RGBStrValueArr = [[NSMutableArray alloc] init];  
  5.     NSString *RGBStr = nil;  
  6.     //获得RGB值描述  
  7.     NSString *RGBValue = [NSString stringWithFormat:@"%@",color];  
  8.     //将RGB值描述分隔成字符串  
  9.     NSArray *RGBArr = [RGBValue componentsSeparatedByString:@" "];  
  10.     //获取红色值  
  11.     int r = [[RGBArr objectAtIndex:1] intValue] * 255;  
  12.     RGBStr = [NSString stringWithFormat:@"%d",r];  
  13.     [RGBStrValueArr addObject:RGBStr];  
  14.     //获取绿色值  
  15.     int g = [[RGBArr objectAtIndex:2] intValue] * 255;  
  16.     RGBStr = [NSString stringWithFormat:@"%d",g];  
  17.     [RGBStrValueArr addObject:RGBStr];  
  18.     //获取蓝色值  
  19.     int b = [[RGBArr objectAtIndex:3] intValue] * 255;  
  20.     RGBStr = [NSString stringWithFormat:@"%d",b];  
  21.     [RGBStrValueArr addObject:RGBStr];  
  22.     //返回保存RGB值的数组  
  23.     return [RGBStrValueArr autorelease];  
  24. }  


0 0