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相关使用方法的更多相关文章

  1. 颜色框架Hue使用方法

    Hue地址 如果有疑问或者想探讨iOS开发相关的技术,十分欢迎. 1. cocoapods安装Hue pod "Hue" 2. 导入框架 import Hue 3. 将十六进制数字 ...

  2. struts2.5框架使用通配符指定方法常见错误

    struts2.5框架使用通配符指定方法(常见错误) 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="shop" namespace ...

  3. Laravel框架中的make方法详解

    为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...

  4. OC 知识:Foundation 框架及相关类详尽总结

    本文用来介绍Foundation框架的相关知识,以及Foundation框架所提供类的相关知识总结. 1. 框架介绍 框架是由很多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使开发程序变得更加 ...

  5. 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)

    1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...

  6. Android View各种尺寸位置相关的方法探究

    Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengd ...

  7. Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试

    我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...

  8. jsp:和属性相关的方法,请求的转发,重定向

    jsp中与属性相关的方法: 方法: void setAttribute(String name, Object o): 设置属性 Object getAttribute(String name):获取 ...

  9. Android音频焦点处理相关的方法

    有这么一种场景:你打开qq音乐.优酷客户端.视频播放的时候.这个时候突然来电显示了,此时所有的MediaPlayer相关的服务或者响应都进入"休眠"状态.那么,这个功能是怎么实现的 ...

随机推荐

  1. ubuntu12.04添加程序启动器到Dash Home

    ubuntu12.04 dash home中每个图标对应/usr/share/applications当中的一个配置文件(文件名后缀为.desktop).所以要在dash home中添加一个自定义程序 ...

  2. 实例说明MVC,MVP,MVVM架构

    很早就知道有这三个概念,但是一直都不清楚是怎么回事,在网上搜索,都是泛泛而谈,没有具体例子,新手是看不懂的,直到找到这篇文章,我对这三个架构有了更清楚的了解. 从一个简单的例子去研究这三个架构. 注意 ...

  3. CentOS7 Redis安装

    Redis介绍 1.安装Redis 官方下载地址:http://download.redis.io 使用Linux下载:wget http://download.redis.io/redis-stab ...

  4. Python自学笔记-面向对象相关(Mr seven)

    ---恢复内容开始--- http://www.cnblogs.com/wupeiqi/articles/5433893.html 类的成员可以分为三大类:字段.方法和属性. 一.字段 字段包括:普通 ...

  5. 跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题

    问题 生成缩略图 生成验证码 生成二维码 给图片加水印 外部引用 Node  不解释  https://nodejs.org/en/download/ sharp 高性能缩略图  https://gi ...

  6. JavaWeb学习笔记——jquery中的dom操作

     jquery中的dom操作 废话不说:直接上例子: 1.添加节点-html页面 Append:向每个匹配的元素内部追加内容. <body> <ul id="city& ...

  7. 一些精妙的sql语句收集

    --1.说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) --法一: select * into b from a where 1<>1 --法二: select ...

  8. Django实现用户密码重置

    使用Django内置的认证视图实现简单的通过邮箱重置密码的功能版本:django 1.11 在django.contrib.auth.views中提供了四个类视图用于密码重置 class Passwo ...

  9. Django安装Xadmin步骤

    在Django中安装Xadmin替换原始的admin,下面介绍两种方法安装 第一种方法:pip安装 第一步: 直接pip安装xadmin pip install xadmin pip会同时安装上面三个 ...

  10. Codeforces A. Trip For Meal

    A. Trip For Meal time limit per test 1 second memory limit per test 512 megabytes input standard inp ...