问题
I want to control the brightness of the main-screen within my Mac OS X app (like the F1/F2 buttons). In iOS, there's something like this:
UIScreen.mainScreen().brightness = CGFloat(0.5)
In OSX we have NSScreen, which is nice to find out what the main-screen is, but it misses the .brightness
method.
So how can I adjust the monitor brightness using Swift on OSX?
回答1:
There's no such nice API for doing this on OS X.
We have to use IOServiceGetMatchingServices
to find "IODisplayConnect"
(the display device) then use the kIODisplayBrightnessKey
to set the brightness:
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)
来源:https://stackoverflow.com/questions/32691397/adjust-screen-brightness-in-mac-os-x-app