• UIColor、CIColor 和 CGColor 出现在不同的类库里面,其实就是颜色存储方式不同而已,比如 999 可以用 10 进制、2 进制、16 进制等存储。三者之间都是能够方便转换的,特别是很多构造函数。

0、极速宏

/** 颜色生成 */
#define CHColor_A(r,g,b,a) [UIColor colorWithRed:r/255.f green:g/255.f blue:b/255.f alpha:a]
/** 颜色生成 */
#define CHColor(r,g,b) CHColor_A(r,g,b,1.0) /** 十六进制颜色 -> 0x123456 */
#define CHRGB16HEX(hex_0x) [UIColor colorWithRed:((float)((hex_0x & 0xFF0000) >> 16))/255.0 green:((float)((hex_0x & 0xFF00) >> 8))/255.0 blue:((float)(hex_0x & 0xFF))/255.0 alpha:1.0] #define CHRGB16HEX_A(hex_0x, a) [UIColor colorWithRed:((float)((hex_0x & 0xFF0000) >> 16))/255.0 green:((float)((hex_0x & 0xFF00) >> 8))/255.0 blue:((float)(hex_0x & 0xFF))/255.0 alpha:a] /** 设置随机颜色 */
#define CHRandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0] /** 黑色 */
#define Black_Color [UIColor blackColor]
/** 深灰色 */
#define DarkGray_Color [UIColor darkGrayColor]
/** 浅灰色 */
#define LightGray_Color [UIColor lightGrayColor]
/** 白色 */
#define White_Color [UIColor whiteColor]
/** 灰色 */
#define Gray_Color [UIColor grayColor]
/** 红色 */
#define Red_Color [UIColor redColor]
/** 绿色 */
#define Green_Color [UIColor greenColor]
/** 蓝色 */
#define Blue_Color [UIColor blueColor]
/** 蓝绿色 */
#define Cyan_Color [UIColor cyanColor]
/** 黄色 */
#define Yellow_Color [UIColor yellowColor]
/** 品红色 */
#define Magenta_Color [UIColor magentaColor]
/** 橘黄色 */
#define Orange_Color [UIColor orangeColor]
/** 紫色 */
#define Purple_Color [UIColor purpleColor]
/** 棕色 */
#define Brown_Color [UIColor brownColor]
/** 透明色 */
#define Clear_Color [UIColor clearColor]

1、UIColor 的创建

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

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

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

// 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];
  • 1.4 由图片创建

UIColor *color4 = [UIColor colorWithPatternImage:[UIImage imageNamed:@"13"]];
  • 1.5 由 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];

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

// UIColor 转 CGColor
CGColorRef color = [[UIColor greenColor] CGColor]; // CGColor 转 UIColor
UIColor *CG_To_UIColor = [UIColor colorWithCGColor:self.outerCircleV.layer.borderColor];

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

  • 适用于 0Xc83c23、#c83c23、c83c23 格式的十六进制颜色值。
/// 由十六进制颜色值创建 RGB 颜色值,带透明度设置
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha { NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; // String should be 6 or 8 characters
if ([cString length] < 6) {
return [UIColor clearColor];
} // strip "0X" or "#" if it appears
if ([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 substrings
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: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];

4、其他

UIColor的更多相关文章

  1. iOS - 对UIColor颜色反差

    iOS中默认的很多方法可以获得不同种颜色的UIColor对象,但是White和Black等灰度值其实是用灰阶透明度调制 +colorWithWhite:alpha:,这些CGColorRef拥有2个组 ...

  2. iOS UIColor RGB HEX

    +(UIColor *)colorWithR:(CGFloat)r g:(CGFloat)g b:(CGFloat)b a:(CGFloat)a{ return [UIColor colorWithR ...

  3. UIColor 使用起来的坑

    我们一般会用 UIColor 的RGB来生成颜色: [UIColor colorWithRed:220/255 green:220/255 blue:220/255 alpha:1.0];//这样生成 ...

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

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

  5. Swift - 生成随机颜色(Extension UIColor)

    在开发中,我们有时需要生成一些随机的颜色.但 UIColor 没有提供方法或属性来直接获取随机颜色,这里对其进行扩展,方便使用. 1,扩展UIColor,增加随机颜色属性 1 2 3 4 5 6 7 ...

  6. 根据UIColor对象,获取对应的RGBA值

    - (NSArray *)getRGBWithColor:(UIColor *)color { CGFloat red = 0.0; CGFloat green = 0.0; CGFloat blue ...

  7. UIColor与PatternImage

    UIColor有一个方法叫做+ (UIColor *)colorWithPatternImage:(UIImage *)image;. 返回的是一个UIColor,但没有明确的RGB值,所以叫做pat ...

  8. 【代码笔记】iOS-16进制颜色与UIColor互转

    一,效果图 二,工程目录. 三,代码 RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additio ...

  9. IOS中十六进制的颜色转换为UIColor

    IOS中十六进制的颜色转换为UIColor #pragma mark - 颜色转换 IOS中十六进制的颜色转换为UIColor + (UIColor *) colorWithHexString: (N ...

  10. 通过颜色代码初始化UIColor

    #define UIColorFromHEX(rgbValue) [UIColor \ colorWithRed:((float)((rgbValue & 0xFF0000) >> ...

随机推荐

  1. 一段shallowCopy和deepCopy的认识

    :什么是浅拷贝(shallow copy)和深拷贝(deep copy)? A: 浅拷贝就是成员数据之间的一一赋值:把值一一赋给要拷贝的值.但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资 ...

  2. boost1_55_0编译和安装

    1.在www.boost.org下载文件并解压 2.进行解压目录 2.1 编译前的配置工作 执行bootstrap.bat  windows 使用vs2010: 修改\boost_1_55_0\too ...

  3. [转载]将网卡(设备中断)绑定到特定CPU

    在前阵子看到HelloDB的一篇文章“MySQL单机多实例方案”中提到: 因为单机运行多个实例,必须对网络进行优化,我们通过多个的IP的方式,将多个MySQL实例绑定在不同的网卡上,从而提高整体的网络 ...

  4. 机器学习:使用scikit-learn库中的网格搜索调参

    一.scikit-learn库中的网格搜索调参 1)网格搜索的目的: 找到最佳分类器及其参数: 2)网格搜索的步骤: 得到原始数据 切分原始数据 创建/调用机器学习算法对象 调用并实例化scikit- ...

  5. POJ 1276 Cash Machine(单调队列优化多重背包)

    Cash Machine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38986   Accepted: 14186 De ...

  6. eclipse中创建包时变成文件夹,且文件夹内的类无法被其他类引用

    1.检查该文件夹是否已经被配置到了工程的build path里source folders ===>右键工程 选Build Path->Configure Build Path就可以看到 ...

  7. d-s证据理论

    证据理论是Dempster于1967年首先提出,由他的学生Shafer于1976年进一步发展起来的一种不精确推理理论,也称为Dempster/Shafer 证据理论(D-S证据理论),属于人工智能范畴 ...

  8. I/O完成端口(IOCP)

    服务器: #include "stdafx.h" #include <winsock2.h> #pragma comment(lib, "ws2_32.lib ...

  9. 装饰器api

    import hashlib import time from django.http import HttpResponse key="qwrwertyuiop" visited ...

  10. oracle——基础知识(二)未完

    1.select 查询 单独的一条 select 语句 可以一次查询多条记录:但是在 pl/sql 块中,select语句只能 使用INTO子句:必须并且只能返回一行 2.EXECUTE IMMEDI ...