IOS小技巧——如何将美工的16进制颜色转换成IOS中的RGB颜色

原创 2015年07月08日 00:50:56

// 在我们实际工作中,美工给我们的UI图在是表明256位设置的UIColor,而是给我们16进制的颜色代码,例如@”#ffffff”等那么,我们该如何将这些颜色代码转换成我们需要的颜色呢?

+ (UIColor *)colorWithHexString:(NSString *)hexString alpha:(CGFloat)alpha
{
    NSString *cString = [[hexString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];

    // 字符串必须为6位或8位的才能识别,所以叫你的美工别偷懒喔,要写全,如果颜色代码不对默认为黑色

    if ([cString length] < 6) return [UIColor blackColor];
    // 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 blackColor];

    //将字符串转换成我们需要的RGB颜色

    NSRange range;
    range.location = 0;
    range.length = 2;
    // 获取0~2位字符串
    NSString *rString = [cString substringWithRange:range];
    range.location = 2;
    // 获取2~4位字符串
    NSString *gString = [cString substringWithRange:range];
    range.location = 4;
    // 获取4~6位字符串
    NSString *bString = [cString substringWithRange:range];

   // 转换成RGB的值
    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];
}

但是我们也有更加简单的方法

#define UIColorFromRGB(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]

利用这个宏定义,也能达到我么的需求

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java后台如何将rgb与16进制颜色进行转换

在开发过程中接触到了颜色转换,前端采用了color标签。格式是rgb(xx,xx,xx)格式的,而服务器端数据库存储的是#XXXX12格式16进制代码,那么这之间就需要进行转换,一开始在网上找了一些教...

[python]从零开始学python——颜色的16进制于RGB之间的转换

Talk is cheap, show me the code!

iPhone开发 – 小技巧二则 (UIColor 16进制颜色 | UIview设置frame)

引言 开发中总遇到各种各样的问题,解决方法也各有各的不同,可以说是条条大路通罗马,但是总有一条或几条是最优的,开始的时候我们可能只是为了完成去罗马的任务,但是罗马去多了以后,总会发现些捷径,既然有捷...

iOS 16进制颜色设置

  • 2016年12月13日 16:15
  • 3KB
  • 下载

Xamarin.iOS_16进制颜色转UIColor

stackoverflow原文:http://stackoverflow.com/questions/10310917/uicolor-from-hex-in-monotouch iOS里面没有现成A...

java如何将字符转换成‘16进制格式’的字符串编码

记录一下而已,不是多复杂的东西。不多说,直接代码 一.根据byte的二进制值,分别取高低的四位转换成16进制字符 String str = "我"; byte[] ba = str.g...

php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串

php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了。   数据库脚本: -- ---------------...
  • ljl_xyf
  • ljl_xyf
  • 2011年08月17日 16:59
  • 1020

iOS开发中 色值 16进制相互转换 详细RGB值

在iOS开发中 因为UI设计师的差异  有时候会对一些色值参数给的不详细  经常性的找UI要  不仅浪费时间 有时候还会让UI抱怨  下面我就介绍一下小工具解决这个问题 1,想要UI设计图上面RG...

常用颜色中英文,16进制,rgb格式

颜色对照表 序号 颜色 英文代码 形像颜色 HEX格式 RGB格式 1   LightPink 浅粉红 #FFB6C1...

前端笔试题笔记:拍扁多维数组、提取URL中的参数变成对象、string的trim()函数、判断Email地址、16进制颜色转rgb

拍扁多维数组、提取URL中的参数变成对象、实现string的trim()函数、判断Email地址、16进制颜色转rgb格式...
  • ldldong
  • ldldong
  • 2015年03月31日 21:50
  • 746
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS小技巧——如何将美工的16进制颜色转换成IOS中的RGB颜色
举报原因:
原因补充:

(最多只允许输入30个字)