Hue地址
如果有疑問(wèn)或者想探討iOS開(kāi)發(fā)相關(guān)的技術(shù),十分歡迎。
1. cocoapods安裝Hue
pod "Hue"
2. 導(dǎo)入框架
import Hue
3. 將十六進(jìn)制數(shù)字變成對(duì)應(yīng)的顏色值
let color = UIColor.init(hex: "#DDDDDD")
4. 顏色轉(zhuǎn)顏色值
let hex1 = UIColor.red.hex(true) /// 將顏色轉(zhuǎn)為十六進(jìn)制,前面有#號(hào)
let hex2 = UIColor.red.hex(false) /// 將顏色轉(zhuǎn)為十六進(jìn)制,前面沒(méi)有#號(hào)
let red = UIColor.red.redComponent /// 獲取顏色中紅色的色值,0-1
let green = UIColor.red.greenComponent /// 獲取顏色中綠色的色值,0-1
let blue = UIColor.red.blueComponent /// 獲取顏色中藍(lán)色的色值,0-1
let alpla = UIColor.red.alphaComponent /// 獲取顏色的透明度,0-1
5. 區(qū)別顏色的深淺
let isDark = UIColor.red.isDark /// 是否是暗色的
let isWhite = UIColor.red.isWhite /// 是否是白色的,或者接近白色
let isBlack = UIColor.red.isBlack /// 是否是黑色,或者接近黑色
let isBlackOrWhite = UIColor.red.isBlackOrWhite /// 是否是白色或黑色,或者接近白色或黑色
注意:這幾個(gè)方法依賴(lài)于Hue以下方法internal func rgbComponents() -> [CGFloat],但是這個(gè)方法中的guard語(yǔ)法判斷是有一點(diǎn)失誤的,不知道是swift4.0更新的原因還是編寫(xiě)時(shí)的失誤,let RGB = cgColor.components這個(gè)語(yǔ)句獲取的RGB數(shù)組個(gè)數(shù)是4,[R,G,B,A],三基色與透明度,但是在這個(gè)方法中的guard判斷中是根據(jù)RGB.count == 3判斷的,這樣就會(huì)導(dǎo)致這個(gè)方法返回值一直是[0,0,0],這樣就會(huì)導(dǎo)致判斷失誤,總是在判斷是否是黑色,解決方法是將RGB.count == 3改為RGB.count == 4
6. 判斷兩個(gè)顏色是否類(lèi)似(相近)
/// 一種顏色是否不同于另一種顏色,有明顯差異
let isDistinctFrom = UIColor.red.isDistinctFrom(UIColor.red)
/// 兩種顏色形成對(duì)比,相差較大
let isContrasting = UIColor.red.isContrastingWith(UIColor.red)
7. 設(shè)置漸變顏色
let gradient = [UIColor.red, UIColor.yellow, UIColor.blue,UIColor.green].gradient { (gra) -> CAGradientLayer in
gra.frame = self.view.bounds /// 設(shè)置漸變的區(qū)域
gra.locations = [0.2, 0.4, 0.6] /// 設(shè)置漸變顏色的分割線(xiàn)
gra.startPoint = .init(x: 0, y: 0.5) /// 設(shè)置漸變顏色的起始位置(0,0)左上角到(1,1)右下角
gra.endPoint = .init(x: 1, y: 0.5) /// 設(shè)置漸變顏色的結(jié)束位置(0,0)左上角到(1,1)右下角
return gra
}
view.layer.addSublayer(gradient) /// 將漸變圖層添加到視圖上
8. 顏色混合
/// 給顏色增加指定色調(diào)與透明度
///
/// - Parameters:
/// - hue: 需要增加的色調(diào),不是最終的色調(diào)
/// - saturation: 需要增加的飽和度,不是最終的飽和度
/// - brightness: 需要增加的亮度,不是最終的亮度
/// - alpha: 需要增加的透明度,不是最終的透明度
/// - Returns: 添加色調(diào)之后的顏色
public func addHue(_ hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat) -> UIColor
/// 將一種顏色的色調(diào)增加到另一種顏色中,不包含透明度
///
/// - Parameter color: 需要添加到另一種顏色中的顏色
/// - Returns: 混合之后的顏色
public func addHSB(color: UIColor) -> UIColor
/// 將一種顏色的色調(diào)增加到另一種顏色中,包含透明度
///
/// - Parameter color: 需要添加到另一種顏色中的顏色
/// - Returns: 混合之后的顏色
public func addHSBA(color: UIColor) -> UIColor
/// 給顏色增加三基色與透明度
///
/// - Parameters:
/// - red: 增加紅色色值,并非最終的紅色色值
/// - green: 增加綠色色值,并非最終的綠色色值
/// - blue: 增加藍(lán)色色值,并非最終的藍(lán)色色值
/// - 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. 獲取圖片的相關(guān)顏色(總感覺(jué)不是太準(zhǔn))
public func colors(_ scaleDownSize: CGSize? = nil) -> (background: UIColor, primary: UIColor, secondary: UIColor, detail: UIColor)
/// 示例
let colors = UIImage.init().colors() /// 獲取相關(guān)顏色的元組
let bgColor = colors.background /// 背景顏色
let primary = colors.primary /// 主要顏色
let secondary = colors.secondary /// 次要顏色
let detail = colors.detail /// 細(xì)節(jié)顏色
let color = colors.background.color(at: CGPoint.init(x: 0, y: 0)) /// 獲取圖片指定坐標(biāo)位置的顏色