iOS开发一句代码轻松实现十六进制颜色(#开头)转RGB颜色

释放双眼,带上耳机,听听看~!

我们在做iOS开发,给一个 view添背景颜色时,一般都是用到RGB颜色,比如下面这样的

    self.view.backgroundColor=[UIColor colorWithRed:0.578 green:0.720 blue:1.000 alpha:1.000];

然后美工给我们作图的时候往往给我们的色值都是十六进制的颜色, 比如这样的

十六进制的色值

如果老大不管你的话,可以直接用滴管直接吸取这个颜色,但是一般情况下都会有误差,所以笔者不建议这么用,这需要将#6cabdf转换成UIColor供我们使用,笔者写了一个UIColor拓展的类方法直接调用,方便简洁,调用如下。
首先导入

//建议写到.pch文件中 方便全项目调用
#import "UIColor+ColorChange.h"

调用的时候直接传入#6cabdf即可

    self.view.backgroundColor=[UIColor colorWithHexString:@"#6cabdf"];

运行效果图:

模拟器部分截图

这样颜色基本上就跟美工给的颜色一样啦。

具体实现方法如下,
UIColor+ColorChange.h

#import <UIKit/UIKit.h>
@interface UIColor (ColorChange)
// 颜色转换:iOS中(以#开头)十六进制的颜色转换为UIColor(RGB)
+ (UIColor *) colorWithHexString: (NSString *)color;
@end

UIColor+ColorChange.m

#import "UIColor+ColorChange.h"
@implementation UIColor (ColorChange)
+ (UIColor *) colorWithHexString: (NSString *)color
{
NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if ([cString length] < 6) {
return [UIColor clearColor];
}
// 判断前缀
if ([cString hasPrefix:@"0X"])
cString = [cString substringFromIndex:2];
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 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:1.0f];
}
@end

基本实现方法就是这样啦,

 

为TA充电
共{{data.count}}人
人已赞赏
iOS文章

iOS中常用的几种设计模式

2021-5-6 10:20:39

iOS文章

iOS在图片上添加文字或图片

2021-5-6 10:43:15

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索