Hue地址
如果有疑問或者想探討iOS開發(fā)相關(guān)的技術(shù)算灸,十分歡迎省艳。
1. cocoapods安裝Hue
pod "Hue"
2. 導入框架
import Hue
3. 將十六進制數(shù)字變成對應的顏色值
let color = UIColor.init(hex: "#DDDDDD")
4. 顏色轉(zhuǎn)顏色值
let hex1 = UIColor.red.hex(true) /// 將顏色轉(zhuǎn)為十六進制洛二,前面有#號
let hex2 = UIColor.red.hex(false) /// 將顏色轉(zhuǎn)為十六進制,前面沒有#號
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. 區(qū)別顏色的深淺
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數(shù)組個數(shù)是4逸爵,[R,G,B,A]具滴,三基色與透明度,但是在這個方法中的guard判斷中是根據(jù)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. 設(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è)置漸變顏色的分割線
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: 增加藍色色值次和,并非最終的藍色色值
/// - 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)顏色(總感覺不是太準)
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 /// 細節(jié)顏色
let color = colors.background.color(at: CGPoint.init(x: 0, y: 0)) /// 獲取圖片指定坐標位置的顏色