Автосброс оттенка и насыщенности цвета

В процессе разработки компонента выбора цвета пришлось столкнуться с парой неприятных моментов, касающихся работы с 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