How can I create a UIColor from a hex string?

后端 未结 30 1676
北恋
北恋 2020-11-22 16:53

How can I create a UIColor from a hexadecimal string format, such as #00FF00?

30条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-22 17:37

    Another implementation allowing strings like "FFF" or "FFFFFF" and using alpha:

    + (UIColor *) colorFromHexString:(NSString *)hexString alpha: (CGFloat)alpha{
        NSString *cleanString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@""];
        if([cleanString length] == 3) {
            cleanString = [NSString stringWithFormat:@"%@%@%@%@%@%@",
                           [cleanString substringWithRange:NSMakeRange(0, 1)],[cleanString substringWithRange:NSMakeRange(0, 1)],
                           [cleanString substringWithRange:NSMakeRange(1, 1)],[cleanString substringWithRange:NSMakeRange(1, 1)],
                           [cleanString substringWithRange:NSMakeRange(2, 1)],[cleanString substringWithRange:NSMakeRange(2, 1)]];
        }
        if([cleanString length] == 6) {
            cleanString = [cleanString stringByAppendingString:@"ff"];
        }
    
        unsigned int baseValue;
        [[NSScanner scannerWithString:cleanString] scanHexInt:&baseValue];
    
        float red = ((baseValue >> 24) & 0xFF)/255.0f;
        float green = ((baseValue >> 16) & 0xFF)/255.0f;
        float blue = ((baseValue >> 8) & 0xFF)/255.0f;
    
        return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
    }
    

提交回复
热议问题