iOS - UIColor
前言
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相关推荐
- iOS UIColor简介
1. UIColor初始化 由白色透明度创建 + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; 由三原色创建 + (UI ...
- iOS UIColor,CGColor,CIColor三者的区别和联系
最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清楚它们之间的区别和联系.下面我们分别看看它们三个的概念: 一.UIColo ...
- IOS UIColor 自定义颜色
2019独角兽企业重金招聘Python工程师标准>>> 1. 利用UIColor展现 #F6F6F6 这个传统的颜色 #F6F6F6 为一个 16 进制表示的RPG颜色,所以,需要先 ...
- iOS UIColor转换为UIImage
+ (UIImage *)wm_imageWithColor:(UIColor *)color {CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);// ...
- iOS UIColor RGB 颜色对照表
色 彩 RGB 值 对 照 表 color red green blue Hexadecimal triplet example Aliceblue 240 248 255 f0f8ff Anti ...
- uicolor swift_Swift中的UIColor
uicolor swift UIColor (UIColor) An object that stores color data and sometimes opacity. 存储颜色数据和有时不透明 ...
- 过早优化是万恶之源_专业化是万恶之源
过早优化是万恶之源 Has something like this ever happened to you? 发生过类似的事情吗? You go on a website, and there's ...
- iOS 十六进制的颜色值转换为UIColor
UIColor+Hex.h里面中 #import <UIKit/UIKit.h>@interface UIColor (Hex) + (UIColor *) colorWithHexStr ...
- iOS中UIColor,CGColor,CIColor详解
最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清楚它们之间的区别和联系.下面我们分别看看它们三个的概念: 一.UIColo ...
最新文章
- oracle 带有变量的语句_Oracle 动态SQL语句(2)之含变量的WHERE语句与日期变量
- boost::mpi模块实现测试mpi版本
- Ubuntu香港apt-get源
- 2G、3G即将退出群聊;全国携号转网就要实现了;5G商用列车已发车...
- 无限级导航PHP,jQuery多级无限级导航下拉菜单代码
- 安装选择Arduino Leonardo新手入门体验
- 机器学习--支持向量机(五)核函数详解
- hadoop组件及其作用
- C语言画图形(图形库graphics的使用)
- U盘量产,以及U盘“请将磁盘插入u盘”等问题。
- 元气骑士如何获得机器人成就皮肤_元气骑士成就系统攻略 成就获取方法一览...
- [编程题]字符串分隔
- 百度地图API,授权失败,错误码:240
- 微信隐藏功能,你们快来瞧一瞧
- QWebView到QWebEngineView
- Excel | IF/IFS函数的使用 | 结合AND, OR, NOT多条件判断
- Android9 HWbinder使用-注册service流程解析
- 交易原则Jesse Livermore 杰西·利弗莫尔
- 工业协议:DNP协议
- JDK 11 API中文帮助文档.CHM文档无法打开问题
热门文章
- module ‘pip‘ has no attribute ‘pep425tags‘的解决方案
- 达人评测 荣耀x20se参数配置
- 魔灵的羁绊为啥显示连接服务器失败,魔灵的羁绊连接 | 手游网游页游攻略大全...
- iOS开发:iPhone分辨率指南
- CPU系统级验证——测试激励——imperas公司riscvOVPsimPlus文件分析
- Go语言基础 结构体
- 钉钉机器人JS代码实现
- 04可重定位目标文件ELF文件解析
- java jsp 仓库存储管理系统的设计zcd900
- 延迟队列:基于Netty的高效的处理延迟任务神器