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 ...
随机推荐
- 「 Luogu P1379 」 八数码难题
# 解题思路 这题不难,主要就是考虑如何判重,如果直接在 $9$ 个位置上都比较一遍的话.你会得到下面的好成绩 所以考虑另一种方法: 将九个位置压成一个整数,并且因为只有九个数,所以不会超出 $int ...
- 【BZOJ 1202】 [HNOI2005]狡猾的商人(枚举区间也可行)
题链:http://www.lydsy.com/JudgeOnline/problem.php?id=1202 其实也可以不使用加权并查集,通过画图可以发现,一个长区间和其包含的区间能够算出一个新区间 ...
- ppt_旋转抽奖_制作步骤
1 ppt制作抽奖转盘 插入饼状图,更改比例,更改颜色(一般选取相邻的一组颜色匹配比较好看): 插入竖文本框,编辑每一个部分为特等奖.一等奖.二等奖.三等奖: 全部选中,ctrl+G组合: 添加陀螺旋 ...
- 三菱PLC FB库函数调用方法 (Gx Work2版本)
本文以 GxWorks2 软件为例 1.新建使用标签项目的工程文件 2.从其它库所在工程项目中导入库 3.选择库文件及FB功能块 4.插入FB功能块调用
- Hermite (埃尔米特)曲线
Hermite 曲线 已知曲线的两个端点坐标P0.P1,和端点处的切线R0.R1,确定的一条曲线. 参数方程 1. 几何形式 2. 矩阵形式 3. 推导 例子分析 如上图有四个点,假如P0.P2是端点 ...
- 【04】< meta > 元素
< meta > 元素 概要 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 we ...
- keil mdk uvision使用技巧
语法检测&代码提示 中文友好: tab 可以选中一大块代码,一起缩进 快速注释 先选中你要注释的代码区,然后右键,选择Advanced,Comment Selection 就可以了 查找替换 ...
- PLSQLDeveloper安装与配置(详细图文)
PLSQLDeveloper安装与配置(详细图文) 听语音 | 浏览:21912 | 更新:2016-10-24 17:12 1 2 3 4 5 6 7 分步阅读 在公司做项目时需要使用PLSQL D ...
- jQuery学习之------选择器
a.id选择器 <div id=”test1”></div> var div1=$(“#test1”); //同css的写法一样id选择器用#号实 ...
- 593. Valid Square
Problem statement: Given the coordinates of four points in 2D space, return whether the four points ...