美文网首页
iOS-使用16进制颜色例如#ff9719

iOS-使用16进制颜色例如#ff9719

作者: HanZhiZzzzz | 来源:发表于2021-05-17 16:17 被阅读0次

    // 方法一

    #define UIColorFromRGBValue(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
    

    使用

    UIColorFromRGBValue(0xff9719)
    

    // 方法二

    右键点击new file--》选择objective-c file--》创建类 category--》起个名字HexadecimalColor--》class处选择UIColor--》点击create--》

    .h文件实现方法--》

    
    @interface UIColor (HexadecimalColor)
    
    + (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha;
    
    @end
    

    --》在.m文件中实现方法具体如下--》

    #import "UIColor+HexadecimalColor.h"
    
    @implementation UIColor (HexadecimalColor)
    
    //实现方法
    
    + (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha
    
    {
    
        //删除字符串中的空格
    
        //    NSString*cString = [[color stringByTrimmingCharactersInSet[NSCharacterSet         whitespaceAndNewlineCharacterSet]] uppercaseString];
    
        NSString*cString = [color stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]];
    
        // String should be 6 or 8 characters
    
        if ([cString length] < 6)
    
        {
    
            return [UIColor clearColor];
    
        }
    
        // strip 0X if it appears
    
        //如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾
    
        if ([cString hasPrefix:@"0X"])
    
        {
    
            cString = [cString substringFromIndex:2];
    
        }
    
        //如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾
    
        if ([cString hasPrefix:@"#"])
    
        {
    
            cString = [cString substringFromIndex:1];
    
        }
    
        if ([cString length] != 6)
    
        {
    
            return [UIColor clearColor];
    
        }
    
        // Separate into r, g, b substrings
    
        NSRange range;
    
        range.location = 0;
    
        range.length = 2;
    
        //r
    
        NSString *rString = [cString substringWithRange:range];
    
        //g
    
        range.location = 2;
    
        NSString *gString = [cString substringWithRange:range];
    
        //b
    
        range.location = 4;
    
        NSString *bString = [cString substringWithRange:range];
    
        // Scan values
    
        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:alpha];
    
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:iOS-使用16进制颜色例如#ff9719

          本文链接:https://www.haomeiwen.com/subject/umvjjltx.html