在 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)
我想在我的 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)