前言

    NS_CLASS_AVAILABLE_IOS(2_0) @interface UIColor : NSObject <NSSecureCoding, NSCopying>@available(iOS 2.0, *)       public class UIColor : NSObject, NSSecureCoding, NSCopying
  • UIColor、CIColor 和 CGColor 出现在不同的类库里面,其实就是颜色存储方式不同而已,比如 999 可以用 10 进制、2 进制、16 进制等存储。三者之间都是能够方便转换的,特别是很多构造函数。

1、UIColor 的创建

  • Objective-C

    • 使用系统定义好的颜色创建

          UIColor *color1 = [UIColor blueColor];// 附带设置颜色的透明度UIColor *color1 = [[UIColor blackColor] colorWithAlphaComponent:0.5];
    • 由白色透明度创建

          // alpha:透明度,1 不透明UIColor *color2 = [UIColor colorWithWhite:1 alpha:0.5];
    • 由三原色创建

          // arc4random()%256/255.0 获取小于等于 1 大于 0 的随机数字CGFloat red = arc4random()%256/255.0;CGFloat green = arc4random()%256/255.0;CGFloat blue = arc4random()%256/255.0;// Red,green,blue 值的范围是 0 ~ 1,alpha:透明度,1 不透明UIColor *color3 = [UIColor colorWithRed:red green:green blue:blue alpha:1];
    • 由图片创建

          UIColor *color4 = [UIColor colorWithPatternImage:[UIImage imageNamed:@"13"]];
    • 由 16 进制字符串创建

          NSString *colorString = @"#FF0000";// 十六进制数字字符串转十进制数字NSString *s1 = [colorString substringWithRange:NSMakeRange(1, 2)];unsigned long c1 = strtoul([s1 UTF8String], 0, 16);NSString *s2 = [colorString substringWithRange:NSMakeRange(3, 2)];unsigned long c2 = strtoul([s2 UTF8String], 0, 16);NSString *s3 = [colorString substringWithRange:NSMakeRange(5, 2)];unsigned long c3 = strtoul([s3 UTF8String], 0, 16);// Red,green,blue 值的范围是 0 ~ 1,alpha:透明度,1 不透明UIColor *color5 = [UIColor colorWithRed:c1/255.0 green:c2/255.0 blue:c3/255.0 alpha:1];
  • Swift

    • 使用系统定义好的颜色创建

          let color1:UIColor = UIColor.blueColor()// 附带设置颜色的透明度let color1:UIColor = UIColor.blackColor().colorWithAlphaComponent(0.5)
    • 由白色透明度创建

          // alpha:透明度,1 不透明let color2:UIColor = UIColor(white: 1, alpha: 0.5)
    • 由三原色创建

          // arc4random()%256/255.0 获取小于等于 1 大于 0 的随机数字let red:CGFloat = CGFloat(arc4random()%UInt32(256/255.0))let green:CGFloat = CGFloat(arc4random()%UInt32(256/255.0))let blue:CGFloat = CGFloat(arc4random()%UInt32(256/255.0))// Red,green,blue 值的范围是 0 ~ 1,alpha:透明度,1 不透明let color3:UIColor = UIColor(red: red, green: green, blue: blue, alpha: 1)
    • 由图片创建

          let color4:UIColor = UIColor(patternImage: UIImage(named: "13")!)

2、UIColor 与 CIColor 和 CGColor 的相互转换

  • Objective-C

        // UIColor 转 CGColorCGColorRef color = [[UIColor greenColor] CGColor];
  • Swift

        // UIColor 转 CGColorlet color:CGColorRef = UIColor.greenColor().CGColor

3、由十六进制颜色值创建 RGB 颜色值

  • 具体实现代码见 GitHub 源码 QExtension

  • 适用于 0Xc83c23、#c83c23、c83c23 格式的十六进制颜色值。

        /// 由十六进制颜色值创建 RGB 颜色值,带透明度设置+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha {NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];// String should be 6 or 8 charactersif ([cString length] < 6) {return [UIColor clearColor];}// strip "0X" or "#" if it appearsif ([cString hasPrefix:@"0X"])cString = [cString substringFromIndex:2];if ([cString hasPrefix:@"#"])cString = [cString substringFromIndex:1];if ([cString length] != 6)return [UIColor clearColor];// Separate into r, g, b substringsNSRange range;range.location = 0;range.length = 2;// r、g、bNSString *rString = [cString substringWithRange:range];range.location = 2;NSString *gString = [cString substringWithRange:range];range.location = 4;NSString *bString = [cString substringWithRange:range];// Scan valuesunsigned 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:alpha];}/// 由十六进制颜色值创建 RGB 颜色值+ (UIColor *)colorWithHexString:(NSString *)color {return [UIColor colorWithHexString:color alpha:1.0f];}
        // 0X 前缀格式UIColor *color = [UIColor colorWithHexString:@"0Xc83c23"];UIColor *color = [UIColor colorWithHexString:@"0Xc83c23" alpha:0.5];// # 前缀格式UIColor *color = [UIColor colorWithHexString:@"#c83c23"];UIColor *color = [UIColor colorWithHexString:@"#c83c23" alpha:0.5];// 无前缀格式UIColor *color = [UIColor colorWithHexString:@"c83c23"];UIColor *color = [UIColor colorWithHexString:@"c83c23" alpha:0.5];

iOS - UIColor相关推荐

  1. iOS UIColor简介

    1. UIColor初始化 由白色透明度创建 + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; 由三原色创建 + (UI ...

  2. iOS UIColor,CGColor,CIColor三者的区别和联系

    最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清楚它们之间的区别和联系.下面我们分别看看它们三个的概念: 一.UIColo ...

  3. IOS UIColor 自定义颜色

    2019独角兽企业重金招聘Python工程师标准>>> 1. 利用UIColor展现 #F6F6F6 这个传统的颜色 #F6F6F6 为一个 16 进制表示的RPG颜色,所以,需要先 ...

  4. iOS UIColor转换为UIImage

    + (UIImage *)wm_imageWithColor:(UIColor *)color {CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);// ...

  5. iOS UIColor RGB 颜色对照表

     色 彩 RGB  值 对 照 表 color red green blue Hexadecimal triplet example Aliceblue 240 248 255 f0f8ff Anti ...

  6. uicolor swift_Swift中的UIColor

    uicolor swift UIColor (UIColor) An object that stores color data and sometimes opacity. 存储颜色数据和有时不透明 ...

  7. 过早优化是万恶之源_专业化是万恶之源

    过早优化是万恶之源 Has something like this ever happened to you? 发生过类似的事情吗? You go on a website, and there's ...

  8. iOS 十六进制的颜色值转换为UIColor

    UIColor+Hex.h里面中 #import <UIKit/UIKit.h>@interface UIColor (Hex) + (UIColor *) colorWithHexStr ...

  9. iOS中UIColor,CGColor,CIColor详解

    最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清楚它们之间的区别和联系.下面我们分别看看它们三个的概念: 一.UIColo ...

最新文章

  1. oracle 带有变量的语句_Oracle 动态SQL语句(2)之含变量的WHERE语句与日期变量
  2. boost::mpi模块实现测试mpi版本
  3. Ubuntu香港apt-get源
  4. 2G、3G即将退出群聊;全国携号转网就要实现了;5G商用列车已发车...
  5. 无限级导航PHP,jQuery多级无限级导航下拉菜单代码
  6. 安装选择Arduino Leonardo新手入门体验
  7. 机器学习--支持向量机(五)核函数详解
  8. hadoop组件及其作用
  9. C语言画图形(图形库graphics的使用)
  10. U盘量产,以及U盘“请将磁盘插入u盘”等问题。
  11. 元气骑士如何获得机器人成就皮肤_元气骑士成就系统攻略 成就获取方法一览...
  12. [编程题]字符串分隔
  13. 百度地图API,授权失败,错误码:240
  14. 微信隐藏功能,你们快来瞧一瞧
  15. QWebView到QWebEngineView
  16. Excel | IF/IFS函数的使用 | 结合AND, OR, NOT多条件判断
  17. Android9 HWbinder使用-注册service流程解析
  18. 交易原则Jesse Livermore 杰西·利弗莫尔
  19. 工业协议:DNP协议
  20. JDK 11 API中文帮助文档.CHM文档无法打开问题

热门文章

  1. module ‘pip‘ has no attribute ‘pep425tags‘的解决方案
  2. 达人评测 荣耀x20se参数配置
  3. 魔灵的羁绊为啥显示连接服务器失败,魔灵的羁绊连接 | 手游网游页游攻略大全...
  4. iOS开发:iPhone分辨率指南
  5. CPU系统级验证——测试激励——imperas公司riscvOVPsimPlus文件分析
  6. Go语言基础 结构体
  7. 钉钉机器人JS代码实现
  8. 04可重定位目标文件ELF文件解析
  9. java jsp 仓库存储管理系统的设计zcd900
  10. 延迟队列:基于Netty的高效的处理延迟任务神器