在开发中,UI给出的颜色值有时候是十六进制的,有时候给出的是RGB(255,255,255)这样的形式的,而iOS系统提供的方法中并没有直接传递这两种值返回UIColor对象的,这里自己封装了一个以便使用。

UIColor+LMColor.h

#import <UIKit/UIKit.h>@interface UIColor(LMColor)/***  获取透明度为1的随机颜色**  @return 随机获得的UIColor对象*/
+ (UIColor *)randColor;/***  将16进制的颜色值转换成UIColor对象**  @param colorStr 16进制表示的颜色(0xc36000,0Xc36000,#c36000或者c36000格式都支持)*  @param alpha    透明度**  @return 转换过后的UIColor对象*/
+ (UIColor *)colorWithHexString:(NSString *)colorStr alpha:(CGFloat)alpha;/***  返回(168,57,23)表示形式的UIColor**  @param r 红,0~255*  @param g 绿,0~255*  @param b 蓝,0~255*  @param a 透明度,0~100**  @return 转换过后UIColor对象*/
+(UIColor *)colorWithR:(CGFloat)r g:(CGFloat)g b:(CGFloat)b a:(CGFloat)a;
@end

UIColor+LMColor.m

#import "UIColor+LMColor.h"@implementation UIColor(LMColor)+ (UIColor *)randColor {CGFloat r = arc4random_uniform(256);CGFloat g = arc4random_uniform(256);CGFloat b = arc4random_uniform(256);return [UIColor colorWithRed:r / 255.0f green:g / 255.0f blue:b / 255.0f alpha:1];
}+(UIColor *)colorWithR:(CGFloat)r g:(CGFloat)g b:(CGFloat)b a:(CGFloat)a{return [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a/100.0f];
}+ (UIColor *)colorWithHexString:(NSString *)colorStr alpha:(CGFloat)alpha {//移除前缀if ([colorStr hasPrefix:@"0X"] || [colorStr hasPrefix:@"0x"]) {colorStr = [colorStr substringFromIndex:2];}if ([colorStr hasPrefix:@"#"]) {colorStr = [colorStr substringFromIndex:1];}//判断长度if (colorStr.length != 6) {return [UIColor clearColor];}//提取值NSRange range;range.length = 2;//rrange.location = 0;NSString *rStr = [colorStr substringWithRange:range];//grange.location = 2;NSString *gStr = [colorStr substringWithRange:range];//brange.location = 4;NSString *bStr = [colorStr substringWithRange:range];//转换值unsigned int r, g, b;[[NSScanner scannerWithString:rStr] scanHexInt:&r];[[NSScanner scannerWithString:gStr] scanHexInt:&g];[[NSScanner scannerWithString:bStr] scanHexInt:&b];return [UIColor colorWithRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:alpha];
}
@end

转载于:https://www.cnblogs.com/limaofuyuanzhang/p/5727527.html

扩展UIColor类相关推荐

  1. 29.怎样扩展现有类功能?

    实际项目开发中,我们经常会需要对系统的UI控件等进行封装,以达到统一修改.重复代码少.复用性高等效果.OC中,我们一般通过Category来给现有类添加方法:而在Swift中,我们使用Extensio ...

  2. 新型人工突触可用于高度扩展的类脑计算

    来源:科技日报 作者:张梦然 科技日报北京12月28日电 (记者张梦然)据最新一期美国化学会期刊<应用材料与界面>报道,新加坡科技与设计大学(SUTD)研究团队开发出一种基于二维(2D)材 ...

  3. 高度可扩展的类脑神经拟态硬件,完成了字母识别和人脸识别

    基于单晶体管的神经元和突触可大幅降低硬件成本,加速神经拟态硬件的商业化.研究人员使用标准硅 CMOS 工艺制造的单晶体管神经元和突触.它们共同集成在同一个8英寸晶圆片上. 韩国科学技术院(KAIST) ...

  4. [Google Guava] 2.4-集合扩展工具类

    原文链接 译文链接 译者:沈义扬,校对:丁一 简介 有时候你需要实现自己的集合扩展.也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集 ...

  5. swift 打开第三方应用_iOS卡通人物帧动画入门9(大结局):番外篇-扩展第三方类

    扩展第三方类 细心的朋友可能会发现,我们前面计算主角的大小用的总是同一方向第一帧纹理的大小,如果纹理大小有出入的话,会产生较大的偏差,最好的方法是取当前动画帧纹理的大小.不过这有些难度,所以我们退之求 ...

  6. php ci 框架 扩展缓存类,CodeIgniter扩展核心类实例详解

    本文实例讲述了CodeIgniter扩展核心类的方法.分享给大家供大家参考,具体如下: CI中对核心类.辅助类和函数的扩展是相当方便的,配置文件中指定了subclass_prefix扩展前缀,默认为M ...

  7. css扩展语言_如何决定是否应该链接或扩展CSS类

    css扩展语言 by Sarah Dayan 通过莎拉·达扬 如何决定是否应该链接或扩展CSS类 (How to decide whether you should chain or extend C ...

  8. ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号

    写在前面 在项目部署当中会需要更新 css 文件或 js 等资源文件,为了避免由于浏览器缓存的原因无法加载新的 css 或 js ,一般的做法是在资源文件的后面加上一个版本号来解决,这样浏览器就会去服 ...

  9. 如何创建线程?如何创建扩展Thread类?

    大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: · 实现Runnable 接口. · 可以继承Thread类. 前一篇文章介绍了下面介绍了实现Runnable 接口 ...

最新文章

  1. Windows 2008 远程登陆时提示要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限...
  2. python编程大赛队名_【推荐】程序员团队名称和口号word版本 (12页)
  3. 百度地图-矩形编辑的模拟实现
  4. 分享《组播技术白皮书》
  5. B12-UIAlertController(NS_CLASS_AVAILABLE_IOS(8_0))。
  6. Ajax Control Toolkit 控件介绍
  7. excel多列数据生成图分类有间隔
  8. VsCode——创建Vue 模板
  9. Android Studio中默认Botton的颜色(学习笔记)
  10. OneZero第四周第一次站立会议(2016.4.11)
  11. 音视频多媒体开发基础概述之颜色空间(2)YUV YIQ YCrCb CMY颜色空间
  12. sql时间转换时分秒_sql秒转换成时分秒格式
  13. 数字字符串转为数字 C语言实现
  14. localhost和127.0.0.1都无法打开的解决方法
  15. Vue3-浏览器兼容性 IE篇
  16. POJ 1737 Connected Graph (大数+递推)
  17. 计算机概念知识点,计算机知识点最全版概念.doc
  18. 【软考备战·希赛网每日一练】2023年4月28日
  19. iOS开发——网络连接判断
  20. 上传身份证照片js_js上传身份证正反面

热门文章

  1. 控制文件oracle controlfile structure
  2. c语言结构体定义蚂蚁,C语言结构体(struct)常见使用方法
  3. Element 表格嵌套el-popover 多个popover切换时数据动态变化
  4. springboot心跳检测_springboot结合netty+心跳机制
  5. 【C++11】文件操作ifstreamofstream
  6. 京东滑块登陆【2023.4.3】
  7. Linux系统中的链接文件
  8. HTML根据当前时间显示问候语,用原生JS写根据时间显示问候语
  9. foreman架构的引入7-Foreman结合mcollective完成push动作
  10. linux搭建认证服务器,手把手教您建立免费的RADIUS认证服务器