Search code examples
macos-mojavenscolor

Convert Mojave Accent colour to RGBA


At a project with 10.14 as macOS deployment target try the following code:

    let colour = NSColor.controlAccentColor
    var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0
    colour.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
    print("RGBA = (\(red), \(green), \(blue), \(alpha))")

The call to getRed freezes and print never gets control.


Solution

  • Need conversion to RGB colour space:

    let colour = NSColor.controlAccentColor
    var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0
    colour.usingColorSpace(.sRGB)!.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
    print("RGBA = (\(red), \(green), \(blue), \(alpha))")  // Works OK