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地址 cocoapods安装Hue pod "Hue" 导入框架 import Hue 将十六进制数字变成对应的颜色值 let color = UIColor.init(he ...

  2. [BS-19]更改UITextField的placeholder文字颜色的5种方法

    更改UITextField的placeholder文字颜色的5种方法 想要达到的目标是:一个页面上有多个UITextField,当用户聚焦某textField时,该文本框的placeholder的文字 ...

  3. C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法

    C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...

  4. python 输出颜色与样式的方法

    上次遇到这个问题就想写下来,其实当时我也不怎么会,老师说这个东西不需要理解,只需要死记硬背,写的多了就记住了,所以今天搜集了几篇文章,加上自己的理解,写下了这篇python 输出颜色的样式与方法的文章 ...

  5. tornado框架的get方法传递参数

    tornado框架的get方法传递参数,代码: # encoding: utf-8 """ @version: ?? @author: andu99 @contact: ...

  6. 【CI3.1】CI框架简单使用方法

    CI框架简单使用方法 1.回忆MVC 1.1.M:模型,提供数据,保存数据 1.2.V:视图,只负责显示,表单form 1.3.C:控制器,协调模型和视图 1.4.action:动作,是控制器中的方法 ...

  7. Python单元测试框架unittest使用方法讲解

    这篇文章主要介绍了Python单元测试框架unittest使用方法讲解,本文讲解了unittest概述.命令行接口.测试案例自动搜索.创建测试代码.构建测试套件方法等内容,需要的朋友可以参考下   概 ...

  8. Android(java)学习笔记106:Android设置文本颜色的4种方法

    1. Android设置文本颜色的4种方法: (1)利用系统自带的颜色类: tv.setTextColor(android.graphics.Color.RED); (2)数字颜色表示: tv.set ...

  9. JS实现随机颜色的3种方法与颜色格式的转化

    JS实现随机颜色的3种方法与颜色格式的转化   随机颜色和颜色格式是我们在开发中经常要用到的一个小功能,网上相关的资料也很多,想着有必要总结一下自己的经验.所以这篇文章主要介绍了JS实现随机颜色的3种 ...

随机推荐

  1. Node JS复制文件

    /** * Created by Administrator on 2019/11/6. *指尖敲打着世界 ----一个阳光而又不失帅气的少年!!!. */ var fs=require(" ...

  2. mongdb group聚合操作

    1.数据准备 [{"goods_id":1,"cat_id":4,"goods_name":"KD876"," ...

  3. 阶段3 3.SpringMVC·_07.SSM整合案例_09.ssm整合之Spring整合MyBatis框架配置事务

    spring加入声明式的事物 配置事物 配置事物管理器 需要一个dataSource,引入上面的dataSource 配置事务通知 引入上面的transactionManager事物管理器 find开 ...

  4. centos 7 删除 virbr0 虚拟网卡

    出现虚拟网卡是因为安装时启用了 libvirtd 服务后生成的关闭方法virsh net-list名称               状态     自动开始  持久------------------- ...

  5. spring boot 整合redis

    spring boot 中配置redis1 在pom.xml中增加相关包依赖:<dependency> <groupId>org.springframework.boot< ...

  6. IFC布局特点

    IFC(inline formatting context),行内格式化上下文 特点: 1.内联元素在水平线上一个接一个排列 2.内部元素水平方向上的margin.padding.border有效,垂 ...

  7. 002. Add Two Numbers

    题目链接:https://leetcode.com/problems/add-two-numbers/description/ Example: Input: (2 -> 4 -> 3) ...

  8. asp.netMVC中配置automap

    第一.新建类库,以解决方案名XXX为例,建立子类库名为  XXX.AutoMapper. 第二. XXX.AutoMapper类库中,添加对automap的引用. 第三.创建映射文件类 ModelPr ...

  9. Jmeter实现WebSocket协议的接口

    1.下载websocket插件的jar包 网盘链接:https://pan.baidu.com/s/1FDcTHdQcDo6izgROMgB96w 密码:uags 该包下载完成后直接放在jmeter的 ...

  10. java:LeakFilling (Linux)

    1.Nosql 列数据库,没有update,非关系型数据库: 为了解决高并发.高可扩展.高可用.大数据存储问题而产生的数据库解决方案,就是NoSql数据库.  NoSQL,泛指非关系型的数据库,NoS ...