如何分辨NSColor controlAccentColor

时间:2018-10-01 03:31:26

标签: cocoa macos-mojave nscolor

我想在一些地方使用[NSColor controlAccentColor],但是当用户选择“蓝色”系统配色时,我也希望退回到特殊的蓝色调。

如何可靠地检测所选择的controlAccentColor的类型/名称?

2 个答案:

答案 0 :(得分:0)

结束于此:

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];
}

答案 1 :(得分:0)

您可以使用以下方法获取颜色的值:

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

当您的系统“重音颜色”设置为蓝色时,它返回nil;而当系统重音颜色设置为其他颜色时,它返回Int值(此处列出的值:How can I determine the macOS 10.14 accent color?