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

ixa*_*any 4 macos cocoa brightness swift

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

UIScreen.mainScreen().brightness = CGFloat(0.5)
Run Code Online (Sandbox Code Playgroud)

在OSX中我们有NSScreen,这很好找出主屏幕是什么,但它错过了.brightness方法.

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

aya*_*aio 11

在OS X上没有这么好的API.

我们必须使用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)
Run Code Online (Sandbox Code Playgroud)