Cocoa 如何说出NSColor控件的名称

Cocoa 如何说出NSColor控件的名称,cocoa,macos-mojave,nscolor,Cocoa,Macos Mojave,Nscolor,我想在一些地方使用[NSColor controlAccentColor],但是,当用户选择蓝色系统强调色时,我还想返回到一种特殊的蓝色色调 如何可靠地检测拾取的controlAccentColor的类型/名称?最后得出以下结论: if (@available(macOS 10.14, *)) { NSColor *accentColor = [[NSColor controlAccentColor] colorUsingColorSpace:[NSColorSpace deviceRGBC

我想在一些地方使用
[NSColor controlAccentColor]
,但是,当用户选择蓝色系统强调色时,我还想返回到一种特殊的蓝色色调

如何可靠地检测拾取的
controlAccentColor
的类型/名称?

最后得出以下结论:

if (@available(macOS 10.14, *)) {
  NSColor *accentColor = [[NSColor controlAccentColor] colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]];
  CGFloat redColor, greenColor, blueColor, alphaColor;
  [accentColor getRed:&redColor green:&greenColor blue:&blueColor alpha:&alphaColor];
  if (blueColor == 1 && redColor <= 0.1 && greenColor <= 0.5) {
    // Our special blue
    return [NSColor colorWithRed:52.0 / 255.0 green:109.0 / 255.0 blue:251.0 / 255.0 alpha:0.9]; // pastel blue
  }
  return [NSColor controlAccentColor];
}
if(@可用(macOS 10.14,*)){
NSColor*accentColor=[[NSColor controlAccentColor]colorUsingColorSpace:[NSColorSpace设备GBcolorSpace]];
CGFloat红色、绿色、蓝色、alphaColor;
[accentColor getRed:&redColor绿色:&greenColor蓝色:&blueColor alpha:&alphaColor];

如果(blueColor==1&&redColor您可以通过以下方式获得颜色的值:

let accent = UserDefaults.standard.value(forKey: "AppleAccentColor")

当您的系统强调色设置为蓝色时,返回nil,或当设置为其他颜色时返回Int值(此处列出的值:)

我认为没有任何方法,因为我怀疑不同的强调色是否有可识别的名称(至少不是公开的)。您可以将强调色转换为HSB并确定它是否为“蓝色”然后换一种不同的蓝色。这就是我一直在做的,直到我意识到“蓝色”的值可能不是恒定的,取决于上下文。我想我会寻找一种更蓝的颜色。