颜色与十六进制值的互转

//字符串转颜色
- (UIColor *) colorWithHexString: (NSString *) stringToConvert {
    NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
    
    if ([cString length] < 6)
        return [UIColor whiteColor];
    if ([cString hasPrefix:@"#"])
        cString = [cString substringFromIndex:1];
    if ([cString length] != 6)
        return [UIColor whiteColor];
    
    NSRange range;
    range.location = 0;
    range.length = 2;
    NSString *rString = [cString substringWithRange:range];
    
    range.location = 2;
    NSString *gString = [cString substringWithRange:range];
    
    range.location = 4;
    NSString *bString = [cString substringWithRange:range];
    
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[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];
}

//颜色转字符串
- (NSMutableArray *) changeUIColorToRGB:(UIColor *)color {
    const CGFloat *cs = CGColorGetComponents(color.CGColor);
    
    NSString *r = [NSString stringWithFormat:@"%@", [self ToHex:cs[0] * 255]];
    NSString *g = [NSString stringWithFormat:@"%@", [self ToHex:cs[1] * 255]];
    NSString *b = [NSString stringWithFormat:@"%@", [self ToHex:cs[2] * 255]];
    return [NSString stringWithFormat:@"#%@%@%@", r, g, b];
}

//十进制转十六进制
- (NSString *)ToHex:(int)tmpid {
    NSString *endtmp = @"";
    NSString *nLetterValue;
    NSString *nStrat;
    int ttmpig = tmpid % 16;
    int tmp = tmpid / 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];
    }
    switch (tmp) {
        case 10:
            nStrat = @"A"; break;
        case 11:
            nStrat = @"B"; break;
        case 12:
            nStrat = @"C"; break;
        case 13:
            nStrat = @"D"; break;
        case 14:
            nStrat = @"E"; break;
        case 15:
            nStrat = @"F"; break;
        default:nStrat = [[NSString alloc] initWithFormat:@"%i", tmp];
    }
    endtmp = [[NSString alloc] initWithFormat:@"%@%@", nStrat, nLetterValue];
    return endtmp;
}

  

猜你喜欢

转载自eric-gao.iteye.com/blog/1739824