颜色框架Hue相关使用方法
Hue地址
如果有疑问或者想探讨iOS开发相关的技术,十分欢迎。
1. cocoapods安装Hue
pod "Hue"
2. 导入框架
import Hue
3. 将十六进制数字变成对应的颜色值
let color = UIColor.init(hex: "#DDDDDD")
4. 颜色转颜色值
let hex1 = UIColor.red.hex(true) /// 将颜色转为十六进制,前面有#号
let hex2 = UIColor.red.hex(false) /// 将颜色转为十六进制,前面没有#号
let red = UIColor.red.redComponent /// 获取颜色中红色的色值,0-1
let green = UIColor.red.greenComponent /// 获取颜色中绿色的色值,0-1
let blue = UIColor.red.blueComponent /// 获取颜色中蓝色的色值,0-1
let alpla = UIColor.red.alphaComponent /// 获取颜色的透明度,0-1
5. 区别颜色的深浅
let isDark = UIColor.red.isDark /// 是否是暗色的
let isWhite = UIColor.red.isWhite /// 是否是白色的,或者接近白色
let isBlack = UIColor.red.isBlack /// 是否是黑色,或者接近黑色
let isBlackOrWhite = UIColor.red.isBlackOrWhite /// 是否是白色或黑色,或者接近白色或黑色
注意:这几个方法依赖于Hue以下方法internal func rgbComponents() -> [CGFloat],但是这个方法中的guard语法判断是有一点失误的,不知道是swift4.0更新的原因还是编写时的失误,let RGB = cgColor.components这个语句获取的RGB数组个数是4,[R,G,B,A],三基色与透明度,但是在这个方法中的guard判断中是根据RGB.count == 3判断的,这样就会导致这个方法返回值一直是[0,0,0],这样就会导致判断失误,总是在判断是否是黑色,解决方法是将RGB.count == 3改为RGB.count == 4
6. 判断两个颜色是否类似(相近)
/// 一种颜色是否不同于另一种颜色,有明显差异
let isDistinctFrom = UIColor.red.isDistinctFrom(UIColor.red)
/// 两种颜色形成对比,相差较大
let isContrasting = UIColor.red.isContrastingWith(UIColor.red)
7. 设置渐变颜色
let gradient = [UIColor.red, UIColor.yellow, UIColor.blue,UIColor.green].gradient { (gra) -> CAGradientLayer in
gra.frame = self.view.bounds /// 设置渐变的区域
gra.locations = [0.2, 0.4, 0.6] /// 设置渐变颜色的分割线
gra.startPoint = .init(x: 0, y: 0.5) /// 设置渐变颜色的起始位置(0,0)左上角到(1,1)右下角
gra.endPoint = .init(x: 1, y: 0.5) /// 设置渐变颜色的结束位置(0,0)左上角到(1,1)右下角
return gra
}
view.layer.addSublayer(gradient) /// 将渐变图层添加到视图上
8. 颜色混合
/// 给颜色增加指定色调与透明度
///
/// - Parameters:
/// - hue: 需要增加的色调,不是最终的色调
/// - saturation: 需要增加的饱和度,不是最终的饱和度
/// - brightness: 需要增加的亮度,不是最终的亮度
/// - alpha: 需要增加的透明度,不是最终的透明度
/// - Returns: 添加色调之后的颜色
public func addHue(_ hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat) -> UIColor
/// 将一种颜色的色调增加到另一种颜色中,不包含透明度
///
/// - Parameter color: 需要添加到另一种颜色中的颜色
/// - Returns: 混合之后的颜色
public func addHSB(color: UIColor) -> UIColor
/// 将一种颜色的色调增加到另一种颜色中,包含透明度
///
/// - Parameter color: 需要添加到另一种颜色中的颜色
/// - Returns: 混合之后的颜色
public func addHSBA(color: UIColor) -> UIColor
/// 给颜色增加三基色与透明度
///
/// - Parameters:
/// - red: 增加红色色值,并非最终的红色色值
/// - green: 增加绿色色值,并非最终的绿色色值
/// - blue: 增加蓝色色值,并非最终的蓝色色值
/// - alpha: 增加的透明度,并非最终的透明度
/// - Returns: 增加三基色之后的颜色
public func addRed(_ red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) -> UIColor
/// 将一种颜色的色值增加到另一种颜色中,不包含透明度
///
/// - Parameter color: 需要添加到另一种颜色中的颜色
/// - Returns: 混合之后的颜色
public func addRGB(color: UIColor) -> UIColor
/// 将一种颜色的色值增加到另一种颜色中,包含透明度
///
/// - Parameter color: 需要添加到另一种颜色中的颜色
/// - Returns: 混合之后的颜色
public func addRGBA(_ color: UIColor) -> UIColor
9. 获取图片的相关颜色(总感觉不是太准)
public func colors(_ scaleDownSize: CGSize? = nil) -> (background: UIColor, primary: UIColor, secondary: UIColor, detail: UIColor)
/// 示例
let colors = UIImage.init().colors() /// 获取相关颜色的元组
let bgColor = colors.background /// 背景颜色
let primary = colors.primary /// 主要颜色
let secondary = colors.secondary /// 次要颜色
let detail = colors.detail /// 细节颜色
let color = colors.background.color(at: CGPoint.init(x: 0, y: 0)) /// 获取图片指定坐标位置的颜色
颜色框架Hue相关使用方法的更多相关文章
- 颜色框架Hue使用方法
Hue地址 如果有疑问或者想探讨iOS开发相关的技术,十分欢迎. 1. cocoapods安装Hue pod "Hue" 2. 导入框架 import Hue 3. 将十六进制数字 ...
- struts2.5框架使用通配符指定方法常见错误
struts2.5框架使用通配符指定方法(常见错误) 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="shop" namespace ...
- Laravel框架中的make方法详解
为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...
- OC 知识:Foundation 框架及相关类详尽总结
本文用来介绍Foundation框架的相关知识,以及Foundation框架所提供类的相关知识总结. 1. 框架介绍 框架是由很多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使开发程序变得更加 ...
- 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...
- Android View各种尺寸位置相关的方法探究
Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengd ...
- Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试
我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...
- jsp:和属性相关的方法,请求的转发,重定向
jsp中与属性相关的方法: 方法: void setAttribute(String name, Object o): 设置属性 Object getAttribute(String name):获取 ...
- Android音频焦点处理相关的方法
有这么一种场景:你打开qq音乐.优酷客户端.视频播放的时候.这个时候突然来电显示了,此时所有的MediaPlayer相关的服务或者响应都进入"休眠"状态.那么,这个功能是怎么实现的 ...
随机推荐
- 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
有不少人问到:flash连接CPU时,根据不同的数据宽度,比如16位的NOR FLASH (A0-A19),处理器的地址线要(A1-A20)左移偏1位.为什么要偏1位? (全文有点晦涩,建议收藏本文对 ...
- mybatis错误——java.io.IOException: Could not find resource com/xxx/xxxMapper.xml
在学习Mybatis的时候,参考网上的教程进行简单demo的搭建,配置的没有问题,然后出现了下面的错误! Exception in thread "main" java.lang. ...
- tcpip第三章
1,ip协议不可靠.无连接特性介绍 不可靠:计算机A往计算机B发送数据报1,若途径的路由器缓存已满,或者ttl(time to live 生存周期)到了,则路由器直接丢弃数据包1,并产生icmp数据包 ...
- C++PrimerPlus第6版 第四章——复合类型
1,复合类型主要包含:数组.结构.联合.枚举.类.指针.引用等. 2,数组.长度必须确定.即编译阶段,数组的长度就得确定好.所以只能使用常量(#define.const)声明数组长度.如果使用变量声明 ...
- Java历程-初学篇 Day03扫描仪与类型转换
一,扫描仪 步骤1,使用扫描仪方法 步骤2,导个包 步骤三,使用 注意事项:严格区分大小写 二,类型转换 1,自动类型转换 当将一个数值范围小的类型赋给一个数值范围大的数值型变量,java在编译过程中 ...
- Hadoop(三)手把手教你搭建Hadoop全分布式集群
前言 上一篇介绍了伪分布式集群的搭建,其实在我们的生产环境中我们肯定不是使用只有一台服务器的伪分布式集群当中的.接下来我将给大家分享一下全分布式集群的搭建! 其实搭建最基本的全分布式集群和伪分布式集群 ...
- C#泛型基础知识点总结
1.0 什么是泛型 泛型是C#2.0和CLR(公共语言运行时)升级的一个新特性,泛型为.NET 框架引入了一个叫 type parameters(类型参数)的概念,type parameters 使 ...
- Oracle Database 10g Express Edition系统文件损坏的解决办法
1.检查错误代码:ora-10010 亦或是ora-10003,上网找响应的解决办法: 异常状态:登陆不上 常用的方法解决 (1)进入Oracle命令行模式 (2)Shutdown immedaite ...
- 面向对象(OOP)--OOP基础与this指向详解
前 言 学过程序语言的都知道,我们的程序语言进化是从“面向机器”.到“面向过程”.再到“面向对象”一步步的发展而来.类似于汇编语言这样的面向机器的语言,随着时代的发展已经逐 ...
- iOS多线程基本使用
大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的,一个复杂的多步操作只能 ...