UIColor与十六进制字符串互转
- UIColor转十六进制字符串
- 方法一:经过测试发现部分颜色会转化为#fffff(五个f),转化残缺导致最后颜色无法还原,不推荐使用。
- // UIColor转#ffffff格式的字符串
- + (NSString *)hexFromUIColor:(UIColor *)color
- {
- if (CGColorGetNumberOfComponents(color.CGColor) < ) {
- const CGFloat *components = CGColorGetComponents(color.CGColor);
- color = [UIColor colorWithRed:components[]
- green:components[]
- blue:components[]
- alpha:components[]];
- }
- if (CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)) != kCGColorSpaceModelRGB) {
- return [NSString stringWithFormat:@"#FFFFFF"];
- }
- return [NSString stringWithFormat:@"#%x%x%x", (int)((CGColorGetComponents(color.CGColor))[]*255.0),
- (int)((CGColorGetComponents(color.CGColor))[]*255.0),
- (int)((CGColorGetComponents(color.CGColor))[]*255.0)];
- }
- 方法二:完美转化为#ffffff格式,暂未发现问题,推荐使用。
- // UIColor转#ffffff格式的字符串
- + (NSString *)hexStringFromColor:(UIColor *)color {
- const CGFloat *components = CGColorGetComponents(color.CGColor);
- CGFloat r = components[];
- CGFloat g = components[];
- CGFloat b = components[];
- return [NSString stringWithFormat:@"#%02lX%02lX%02lX",
- lroundf(r * ),
- lroundf(g * ),
- lroundf(b * )];
- }
- 十六进制字符串转UIColor
- 方法一:
- + (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length {
- NSString *substring = [string substringWithRange: NSMakeRange(start, length)];
- NSString *fullHex = length == ? substring : [NSString stringWithFormat: @"%@%@", substring, substring];
- unsigned hexComponent;
- [[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent];
- return hexComponent / 255.0;
- }
- + (UIColor *) colorWithHexString: (NSString *) hexString {
- NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString];
- CGFloat alpha, red, blue, green;
- switch ([colorString length]) {
- case : // #RGB
- alpha = 1.0f;
- red = [self colorComponentFrom: colorString start: length: ];
- green = [self colorComponentFrom: colorString start: length: ];
- blue = [self colorComponentFrom: colorString start: length: ];
- break;
- case : // #ARGB
- alpha = [self colorComponentFrom: colorString start: length: ];
- red = [self colorComponentFrom: colorString start: length: ];
- green = [self colorComponentFrom: colorString start: length: ];
- blue = [self colorComponentFrom: colorString start: length: ];
- break;
- case : // #RRGGBB
- alpha = 1.0f;
- red = [self colorComponentFrom: colorString start: length: ];
- green = [self colorComponentFrom: colorString start: length: ];
- blue = [self colorComponentFrom: colorString start: length: ];
- break;
- case : // #AARRGGBB
- alpha = [self colorComponentFrom: colorString start: length: ];
- red = [self colorComponentFrom: colorString start: length: ];
- green = [self colorComponentFrom: colorString start: length: ];
- blue = [self colorComponentFrom: colorString start: length: ];
- break;
- default:
- return nil;
- }
- return [UIColor colorWithRed: red green: green blue: blue alpha: alpha];
- }
- 方法二:
- + (UIColor *)colorWithHexString:(NSString *)hexString alpha:(CGFloat)alphaValue {
- NSString *cString = [[hexString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
- if (cString.length < )
- return [UIColor clearColor];
- if ([cString hasPrefix:@"0X"])
- cString = [cString substringFromIndex:];
- if ([cString hasPrefix:@"#"])
- cString = [cString substringFromIndex:];
- if (cString.length != )
- return [UIColor clearColor];
- NSRange range;
- range.location = ;
- range.length = ;
- NSString *rString = [cString substringWithRange:range];
- range.location = ;
- NSString *gString = [cString substringWithRange:range];
- range.location = ;
- NSString *bString = [cString substringWithRange:range];
- unsigned int r, g, b;
- [[NSScanner scannerWithString:rString] scanHexInt:&r];
- [[NSScanner scannerWithString:gString] scanHexInt:&g];
- [[NSScanner scannerWithString:bString] scanHexInt:&b];
- // 注意:myColor是自定义宏
- //#define myColor(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
- return myColor(r, g, b, alphaValue);
- }
UIColor与十六进制字符串互转的更多相关文章
- python 字节数组和十六进制字符串互转
. 字节数组 --> 十六进制字符串 >>> a = 'ab' >>> a.encode('hex') ' . 十六进制字符串 --> 字节数组 > ...
- IOS 十六进制字符串转换成UIColor
/** * 十六进制转换成UIColor * * @param stringToConvert 十六进制字符串 * * @return UIColor */ +(UIColor *) hexStrin ...
- Golang十六进制字符串和byte数组互转
Golang十六进制字符串和byte数组互转 需求 Golang十六进制字符串和byte数组互相转换,使用"encoding/hex"包 实现Demo package main i ...
- python进制转化函数,10进制字符串互转,16进制字符串互转
来了老弟,emmmmm,今天想到平时经常用到编码转化,把字符串转化为16进制绕过等等的,今天想着用python写个玩,查询了一些资料,看了些bolg 上面的两个函数是将二进制流转化为16进制,data ...
- DataTable 和Json 字符串互转
#region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...
- Java中将0x开头的十六进制字符串转换成十进制整数
1.Integer.toString(int i) 由于input(输入数据)是以0x开头的字符串,并不是整型.因而在用 String s = Integer.toString(input); 时用会 ...
- HEX格式数据转换成十六进制字符串
/** * Hex格式数据转换成十六进制字符串 * @param src */ public void bytesToHexString(byte[] by){ StringBuilder strin ...
- ios十进制、十六进制字符串,byte,data等之间的转换
十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL = [NSStringstringWithFormat:@"%@& ...
- 十六进制字符串转化为byte数组
工作上有这样的需求之前找了好多都不行,好不容易有个可以的赶紧留下来. 原址:http://blog.163.com/roadwalker@126/blog/static/113561841201013 ...
随机推荐
- [Python3网络爬虫开发实战] 4.1-使用XPath
XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言.它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索. 所以在做爬虫时,我们完全 ...
- jQuery的鼠标移入与移出事件
mouseover与mouseenter 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件. 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件. mouseou ...
- POJ3641 (快速幂) 判断a^p = a (mod p)是否成立
Description Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a ...
- Uva 12657 移动盒子(双向链表)
题意: 你有一行盒子,从左到右依次编号为1, 2, 3,…, n.可以执行以下4种指令:1 X Y表示把盒子X移动到盒子Y左边(如果X已经在Y的左边则忽略此指令).2 X Y表示把盒子X移动到盒子Y右 ...
- 缩小Oracle目录下UNDOTBS01.DBF文件的大小
缩小Oracle目录下UNDOTBS01.DBF文件的大小 分类: Oracle 使用sys用户登录Oracle 方法一:重置表空间大小 执行ALTER DATABASE DATAFILE 'D:OR ...
- Leetcode 214.最短回文串
最短回文串 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: &qu ...
- React Native学习(十)—— 生命周期
本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...
- FJNUOJ1158(莫比乌斯反演)
题目:给定n个数字a1...an.有m个询问,格式为L R X Y,意为求aL到aR之间与x的最大公因数为y的个数. 数据组数T<=20 1<=n,m<=1e5 1<=ai&l ...
- springboot 关于第三方包 打包问题
第三方包: 添加library 依赖 在pom.xml中配置 <resources> <resource> <directory>lib</directory ...
- Redis Cluster集群搭建后,客户端的连接研究(Spring/Jedis)(待实践)
说明:无论是否已经搭建好集群,还是使用什么样的客户端去连接,都是必须把全部IP列表集成进去,然后随机往其中一个IP写. 这样做的好处: 1.随机IP写入之后,Redis Cluster代理层会自动根据 ...