2

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

我怎样才能可靠地检测到所controlAccentColor挑选的类型/名称?

4

2 回答 2

2

您可以通过以下方式获取颜色的值:

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

当您的系统 Accent Color 设置为蓝色时返回 nil,或者当它设置为其他颜色时返回 Int 值(此处列出的值:如何确定 macOS 10.14 强调色?

于 2019-11-06T01:47:56.233 回答
1

结束了这个:

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];
}
于 2018-10-01T17:55:34.103 回答