我需要保證顏色有足夠的飽和度。如何保證NSColor具有足夠的飽和度?
我做了這個擴展到NSColor
,但我的測試給了我奇怪的值:tempColor
似乎總是有很多飽和度。
所以基本上我的功能總是返回自我?
我的錯誤在哪裏?
我也試過沒有轉換爲NSCalibratedRGBColorSpace
但這並沒有幫助,輸入顏色可以是不同的類型。
extension NSColor {
func withMinimumSaturation(minimumSaturation: CGFloat) -> NSColor {
// color could be hue/rgb/other so we convert to rgb
if var tempColor = self.colorUsingColorSpaceName(NSCalibratedRGBColorSpace) {
// prepare the values
var hue: CGFloat = 0.0
var saturation: CGFloat = 0.0
var brightness: CGFloat = 0.0
var alpha: CGFloat = 0.0
// populate the values
tempColor.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha)
// if color is not enough saturated
if saturation < minimumSaturation {
// return same color with more saturation
return NSColor(calibratedHue: hue, saturation: minimumSaturation, brightness: brightness, alpha: alpha)
}
}
// if detection fails, return same color
return self
}
}
用法:
let source = myColorFromAListOfColors // NSColor
let guaranteed = source.withMinimumSaturation(0.15)
編輯:實際上它的工作原理。我接受了Aaron的回答,因爲它幫助我理解了這種情況(我將顏色與redComponents
進行比較,他們通常是相似的)。
當我試着使用'讓源= NSColor.gridColor()'我得到不同的顏色。 –