How can I create a UIColor from a hex string?

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

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

相关标签:
30条回答
  • 2020-11-22 17:34
     You Can Get UIColor From String Code Like
       circularSpinner.fillColor = [self getUIColorObjectFromHexString:@"27b8c8" alpha:9];
    
     //Function For Hex Color Use
        - (unsigned int)intFromHexString:(NSString *)hexStr
        {
            unsigned int hexInt = 0;
    
            // Create scanner
            NSScanner *scanner = [NSScanner scannerWithString:hexStr];
    
            // Tell scanner to skip the # character
            [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"#"]];
    
            // Scan hex value
            [scanner scanHexInt:&hexInt];
    
            return hexInt;
        }
    
    
    
    
        - (UIColor *)getUIColorObjectFromHexString:(NSString *)hexStr alpha:(CGFloat)alpha
        {
            // Convert hex string to an integer
            unsigned int hexint = [self intFromHexString:hexStr];
    
            // Create color object, specifying alpha as well
            UIColor *color =
            [UIColor colorWithRed:((CGFloat) ((hexint & 0xFF0000) >> 16))/255
                            green:((CGFloat) ((hexint & 0xFF00) >> 8))/255
                             blue:((CGFloat) (hexint & 0xFF))/255
                            alpha:alpha];
    
            return color;
        }
    
        /Function For Hex Color Use
        - (unsigned int)intFromHexString:(NSString *)hexStr
        {
            unsigned int hexInt = 0;
    
            // Create scanner
            NSScanner *scanner = [NSScanner scannerWithString:hexStr];
    
            // Tell scanner to skip the # character
            [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"#"]];
    
            // Scan hex value
            [scanner scanHexInt:&hexInt];
    
            return hexInt;
        }
    
    
    
    
        - (UIColor *)getUIColorObjectFromHexString:(NSString *)hexStr alpha:(CGFloat)alpha
        {
            // Convert hex string to an integer
            unsigned int hexint = [self intFromHexString:hexStr];
    
            // Create color object, specifying alpha as well
            UIColor *color =
            [UIColor colorWithRed:((CGFloat) ((hexint & 0xFF0000) >> 16))/255
                            green:((CGFloat) ((hexint & 0xFF00) >> 8))/255
                             blue:((CGFloat) (hexint & 0xFF))/255
                            alpha:alpha];
    
            return color;
        }
    
    0 讨论(0)
  • 2020-11-22 17:35

    This is another alternative.

    - (UIColor *)colorWithRGBHex:(UInt32)hex
    {
        int r = (hex >> 16) & 0xFF;
        int g = (hex >> 8) & 0xFF;
        int b = (hex) & 0xFF;
    
        return [UIColor colorWithRed:r / 255.0f
                               green:g / 255.0f
                                blue:b / 255.0f
                               alpha:1.0f];
    }
    
    0 讨论(0)
  • 2020-11-22 17:36

    This is nice with cocoapod support

    https://github.com/mRs-/HexColors

    // with hash
    NSColor *colorWithHex = [NSColor colorWithHexString:@"#ff8942" alpha:1];
    
    // wihtout hash
    NSColor *secondColorWithHex = [NSColor colorWithHexString:@"ff8942" alpha:1];
    
    // short handling
    NSColor *shortColorWithHex = [NSColor colorWithHexString:@"fff" alpha:1]
    
    0 讨论(0)
  • 2020-11-22 17:37

    You could use various online tools to convert a HEX string to an actual UIColor. Check out uicolor.org or UI Color Picker. The output would be converted into Objective-C code, like:

    [UIColor colorWithRed:0.93 green:0.80 blue:0.80 alpha:1.0];
    

    Which you could embed in your application. Hope this helps!

    0 讨论(0)
  • 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];
    }
    
    0 讨论(0)
  • 2020-11-22 17:39

    There is no builtin conversion from a hexadecimal string to a UIColor (or CGColor) that I'm aware of. However, you can easily write a couple of functions for this purpose - for example, see iphone development accessing uicolor components

    0 讨论(0)
提交回复
热议问题