通过#色值方式设置颜色

复制代码
 1 + (UIColor *)colorWithRGB:(NSString *)rgbstr{
 2     NSString *newrgbstr = [rgbstr uppercaseString];
 3     NSInteger strlen = newrgbstr.length;
 4     UIColor *color = nil;
 5     unichar first = [newrgbstr characterAtIndex:0];
 6     if (first == '#') {
 7         for (int i = 1; i < strlen; i++) {
 8             unichar u = [newrgbstr characterAtIndex:i];
 9             if (!(u >= '0' && u <= '9') && !(u >= 'A' && u <='F')) {
10                 NSString *exName = [NSString stringWithFormat:@"使用%@类获取指定颜色错误", NSStringFromClass([self class])];
11                 NSException *e = [NSException exceptionWithName:exName reason:@"请检查颜色数值越界" userInfo:nil];
12                 @throw e;
13             }
14         }
15         if (newrgbstr.length == 4) {
16             unichar uarray[3];
17             for(int i = 0;i < 3;i++){
18                 uarray[i] = [newrgbstr characterAtIndex:(i+1)];
19             }
20             for (int i = 0;i < 3;i++) {
21                 uarray[i] = (uarray[i] > '9' ? (uarray[i]-'A'+10) : (uarray[i]-'0')) * 17 % 256;
22             }
23             CGFloat r = uarray[0]/255.0f;
24             CGFloat g = uarray[1]/255.0f;
25             CGFloat b = uarray[2]/255.0f;
26             color = [UIColor colorWithRed:r green:g blue:b alpha:1];
27         }else if(newrgbstr.length == 7){
28             unichar uarray[6];
29             for(int i = 0;i < 6;i++){
30                 uarray[i] = [newrgbstr characterAtIndex:(i+1)];
31             }
32             for (int i = 0;i < 3;i++) {
33                 unichar l = uarray[2*i];
34                 unichar r = uarray[2*i+1];
35                 uarray[i] = ((l > '9' ? (l-'A'+10) : (l-'0')) * 16 +
36                              (r > '9' ? (r-'A'+10) : (r-'0'))) % 256;
37             }
38             CGFloat r = uarray[0]/255.0f;
39             CGFloat g = uarray[1]/255.0f;
40             CGFloat b = uarray[2]/255.0f;
41             color = [UIColor colorWithRed:r green:g blue:b alpha:1];
42         }
43     }
44     return color;
45 }
复制代码

可以通过#fff和#ffffff两种方式设置色值,和设计协调更方便

posted @   PFY  阅读(457)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
阅读排行:
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· C# 开发工具Visual Studio 介绍
· 在 Windows 10 上实现免密码 SSH 登录
· C#中如何使用异步编程
点击右上角即可分享
微信分享提示