原文网址:(56条消息) iOS学习—UIColor使用16进制颜色_MrZWCui的博客-CSDN博客_uicolor 十六进制

1、实现思路
先把16进制转换为RGB然后再书写,为了提高开发速度,本文使用UIColor的分类,直接使用16进制颜色,例:self.view.backgroundColor = [UIColor hexColor:@”#333333″];

首先传入一个string类型的字符串(例:“#333333”),将字符串提取出16进制的部分,两两一组,生成对应的R、G、B三个元素。

2、涉及的方法
NSRange定义如下:
typedef struct _NSRange
{
NSUInteger location;
NSUInteger length;
} NSRange;

NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度。他们都是NSUInteger类型。代码中使用到了NSRange分割字符串。

NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围

NSRange有2个成员:

NSUInteger location : 表示该范围的起始位置

NSUInteger length : 表示该范围内的长度

// 从六位数值中找到RGB对应的位数并转换
NSRange range;
range.location = 0;
range.length = 2;
//R G B
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];

// Scan values,unsigned int表示无符号的整数,int可以为负数
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
3、源代码
UIColor+ZWHexColor.h

@interface UIColor (ZWHexColor)

+ (UIColor *)hexColor:(NSString *)color;
+ (UIColor *)hexColor:(NSString *)color alpha:(CGFloat)alpha;

@end
UIColor+ZWHexColor.m

#import “UIColor+ZWHexColor.h”

@implementation UIColor (ZWHexColor)

+ (UIColor *)hexColor:(NSString *)color {
return [UIColor hexColor:color alpha:1];
}

+ (UIColor *)hexColor:(NSString *)color alpha:(CGFloat)alpha {
/*
删除字符串中的空格
stringByTrimmingCharactersInSet作用:去掉特殊字符
whitespaceCharacterSet 去掉收尾的空格(注:只能去掉收尾的空格)
*/
NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if (cString.length < 6) {
return [UIColor clearColor];
}

/*判断前缀*/
//如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾
if ([cString hasPrefix:@”0x”] || [cString hasPrefix:@”0X”]) {
cString = [cString substringFromIndex:2];
}
//如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾
if ([cString hasPrefix:@”#”]) {
cString = [cString substringFromIndex:1];
}
if (cString.length != 6) {
return [UIColor clearColor];
}

// 从六位数值中找到RGB对应的位数并转换
NSRange range;
range.location = 0;
range.length = 2;
//R G B
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];

// Scan values,unsigned int表示无符号的整数,int可以为负数
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.0 green:(float)g / 255.0 blue:(float)b /255.0 alpha:alpha];
}

@end
代码中使用了pch文件,使用教程请点击。

具体代码如下HexString。

原文地址:http://www.cnblogs.com/wi100sh/p/16793159.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性