在 Mac OS X 应用程序中调整屏幕亮度

Adjust screen brightness in Mac OS X app

我想在我的 Mac OS X 应用程序(如 F1/F2 按钮)中控制主屏幕的亮度。在iOS中,有这样的东西:

UIScreen.mainScreen().brightness = CGFloat(0.5)

在 OSX 中我们有 NSScreen,它很适合找出主屏幕是什么,但它缺少 .brightness 方法。

那么如何在 OSX 上使用 Swift 调整显示器亮度?

API 在 OS X 上做这件事再好不过了。

我们要用IOServiceGetMatchingServices找到"IODisplayConnect"(显示设备)然后用kIODisplayBrightnessKey设置亮度:

func setBrightnessLevel(level: Float) {

    var iterator: io_iterator_t = 0

    if IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect"), &iterator) == kIOReturnSuccess {

        var service: io_object_t = 1

        while service != 0 {

            service = IOIteratorNext(iterator)
            IODisplaySetFloatParameter(service, 0, kIODisplayBrightnessKey, level)
            IOObjectRelease(service)

        }

    }
}

setBrightnessLevel(0.5)