irpas技术客

iOS学习—UIColor使用16进制颜色_MrZWCui_ios uicolor 十六进制

网络投稿 3113

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。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #iOS #uicolor #十六进制 #UIColor使用16进制颜色