zoukankan      html  css  js  c++  java
  • IOS中将十进制色值转换成UIColor

    最近因项目需要,在网上找了一些代码,整合了一下,实现的效果就是将10进制的RGB色值转换IOS用的UIColor,方法还有缺陷,有待改进

    UIColor *getColorFromString(NSString *colorString)
    {
        int colorInt=[colorString intValue];
        if(colorInt<0)
            return [UIColor whiteColor];
        
        NSString *nLetterValue;
        NSString *colorString16 =@"";
        int ttmpig;
        for (int i = 0; i<9; i++)
        {
            ttmpig=colorInt%16;
            colorInt=colorInt/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];
                    
            }
            colorString16 = [nLetterValue stringByAppendingString:colorString16];
            if (colorInt == 0)
                break;
        }
        
        colorString16 = [[colorString16 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; //去掉前后空格换行符
        
        // strip 0X if it appears
        if ([colorString16 hasPrefix:@"0X"])
            colorString16 = [colorString16 substringFromIndex:2];
        if ([colorString16 hasPrefix:@"#"])
            colorString16 = [colorString16 substringFromIndex:1];
        // String should be 6 or 8 characters
        if ([colorString16 length] < 6)
        {
            int cc=6-[colorString16 length];
            for (int i=0; i<cc; i++)
                colorString16=[@"0" stringByAppendingString:colorString16];
        }
        if ([colorString16 length] != 6)
            return [UIColor whiteColor];
        
        // Separate into r, g, b substrings
        NSRange range;
        range.location = 0;
        range.length = 2;
        NSString *bString = [colorString16 substringWithRange:range];
        
        range.location = 2;
        NSString *gString = [colorString16 substringWithRange:range];
        
        range.location = 4;
        NSString *rString = [colorString16 substringWithRange:range];
        
        // Scan values
        unsigned int r, g, b;
        [[NSScanner scannerWithString:rString] scanHexInt:&r];  //扫描16进制到int
        [[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];
    }
    View Code
  • 相关阅读:
    wcf连接数据库用sqlhelper,连接数一直没有释放反而增加
    Assembly.GetManifestResourceStream为null
    webapi <Message>已拒绝为此请求授权。</Message>
    未找到与名为“xxx”的控制器匹配的类型。
    Eclipse Ctrl+鼠标左键不能查看源代码
    WEB API 用MemoryStream流做下载功能
    mysql繁字体报错,Incorrect string value: 'xE9_' for column 'UserName' at row 1
    学信网模拟登录2
    选择排序
    mysql学习笔记
  • 原文地址:https://www.cnblogs.com/dinotang/p/3274207.html
Copyright © 2011-2022 走看看