• iOS 16进制颜色的宏


    iOS 16进制颜色的宏

    // 参数格式为:0xFFFFFF  16进制
    #define kColorWithRGB(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]


    kColorWithRGB(0xFF0000); 相当于 [UIColor redColor];



    // 参数格式为:222,222,222

    #define UIColorWithRGB(r, g, b) [UIColor colorWithRed:(r) / 255.f green:(g) / 255.f blue:(b) / 255.f alpha:1.f]

     
     

    很多地方我们都使用16进制颜色,但iPhone使用的是UIColor对象,不直接支持16进制颜色,为此,需要我们手动将16进制颜色转换为UIColor。

    - (UIColor *)getColor:(NSString*)hexColor

    {

    unsigned int red,green,blue;

    NSRange range;

    range.length = 2;

     

    range.location = 0;

    [[NSScanner scannerWithString:[hexColor substringWithRange:range]]scanHexInt:&red];

     

    range.location = 2;

    [[NSScanner scannerWithString:[hexColor substringWithRange:range]]scanHexInt:&green];

     

    range.location = 4;

    [[NSScanner scannerWithString:[hexColor substringWithRange:range]]scanHexInt:&blue];

     

    return [UIColor colorWithRed:(float)(red/255.0f)green:(float)(green / 255.0f) blue:(float)(blue / 255.0f)alpha:1.0f];

    }


    [self.view setBackgroundColor:[self getColor:@"FF0000"]];

     

     

     

    个面试题:使用内联函数把@“#ff3344”转成UIColor

     
    - (UIColor *) stringTOColor:(NSString *)str
    {
        if (!str || [str isEqualToString:@""]) {
            return nil;
        }
        unsigned red,green,blue;
        NSRange range;
        range.length = 2;
        range.location = 1;
        [[NSScanner scannerWithString:[str substringWithRange:range]] scanHexInt:&red];
        range.location = 3;
        [[NSScanner scannerWithString:[str substringWithRange:range]] scanHexInt:&green];
        range.location = 5;
        [[NSScanner scannerWithString:[str substringWithRange:range]] scanHexInt:&blue];
        UIColor *color= [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:1];
        return color;
    }
     
    0xFF0000 或 #FF0000(#为特殊字符 有可能把这种为空) 或FF0000
    + (UIColor *) colorWithHexString: (NSString *)color
    {
        NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
       
        // String should be 6 or 8 characters
        if ([cString length] < 6) {
            return [UIColor clearColor];
        }
       
        // strip 0X if it appears
        if ([cString hasPrefix:@"0X"])
            cString = [cString substringFromIndex:2];
        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:1.0f];
    }
  • 相关阅读:
    一段c++程序
    一个简单的实现奇 偶判断的代码
    标签记忆法设想
    心算 进制转换 心得 =》 任意进制的数 转 任意进制的数
    PHP面试题
    commons-net使用FTP进行文件下载导致内容乱码的原因
    java中的各种锁机制
    HBase写入过快性能分析及调优
    Hbase Export与Import完成数据迁移
    Linux环境下Oracle19C使用数据泵impdp命令导入dmp文件
  • 原文地址:https://www.cnblogs.com/berry1124/p/4635946.html
Copyright © 2020-2023  润新知