Автосброс оттенка и насыщенности цвета
В процессе разработки компонента выбора цвета пришлось столкнуться с парой неприятных моментов, касающихся работы с HSB-составляющими на нулевых значениях. Первым открытием был сброс оттенка при нулевой насыщенности, а вторым — обнуление и оттенка, и насыщенности при нулевой яркости.
import UIKit
var color: UIColor
var hue = CGFloat()
var saturation = CGFloat()
var brightness = CGFloat()
color = UIColor(hue: 1, saturation: 1, brightness: 1, alpha: 1)
color.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: nil)
// Output: 1.0 1.0 1.0
// Saturation = 0 resets hue to 0
color = UIColor(hue: 1, saturation: 0, brightness: 1, alpha: 1)
color.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: nil)
// Output: 0.0 0.0 1.0
// Brightness = 0 resets hue and saturation to 0
color = UIColor(hue: 1, saturation: 1, brightness: 0, alpha: 1)
color.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: nil)
// Output: 0.0 0.0 0.0