返回 导航

Swift

hangge.com

Swift - 获取UIColor的HSV/HSB值(Hue色相、S饱和度、B亮度)

作者:hangge | 2019-03-13 08:42
    在平时开发中我们使用的都是 RGB 颜色模式,即通过红、绿、蓝三原色来表示一种颜色。RGB 是对机器很友好的色彩模式,但并不够人性化。
    相对于 RGB,还有种 HSB(也叫 HSV)颜色模式,该模式更便于描述人眼对与颜色的感觉。使用该模式可以很明确的表达是什么颜色?鲜艳不鲜艳?亮还是暗?

1,HSB 模式介绍

HSB 又称 HSV,表示一种颜色模式。在 HSB 模式中,颜色由如下三种值组成:
  • Hhue)代表色相:色相指色彩的种类和名称。如红、橙、黄.... 取值范围 ~360°,每个角度可以代表一种颜色。


  • Bbrightness)表示亮度:其作用是控制色彩的明暗变化。它同样使用了 0%100% 的取值范围。数值越小,色彩越暗,越接近于黑色;数值越大,色彩越亮,越接近于白色。

2,获取 HSB 值

(1)为方便使用,我们首先对 UIColor 进行扩展,增加 hsba 属性。用于返回当前颜色对应的 HSB 值。
import UIKit

extension UIColor {
    
    // 返回HSBA模式颜色值
    public var hsba: (hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat) {
        var h: CGFloat = 0
        var s: CGFloat = 0
        var b: CGFloat = 0
        var a: CGFloat = 0
        self.getHue(&h, saturation: &s, brightness: &b, alpha: &a)
        return (h * 360, s, b, a)
    }
}

(2)使用样例:
print("--- 橙色HSB值 ---")
print("色相:", UIColor.orange.hsba.hue)
print("饱和度:", UIColor.orange.hsba.saturation)
print("亮度:", UIColor.orange.hsba.brightness)
print("透明度:", UIColor.orange.hsba.alpha)

print("--- 自定义颜色HSB值 ---")
let color = UIColor(red: 0x37/255, green: 0xba/255, blue: 0x46/255, alpha: 0.5)
print("色相:", color.hsba.hue)
print("饱和度:", color.hsba.saturation)
print("亮度:", color.hsba.brightness)
print("透明度:", color.hsba.alpha)

(3)运行结果如下:
评论

全部评论(0)

回到顶部