You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS SwiftUI应用中适配Intel与Apple Silicon调整屏幕亮度

兼容Intel与Apple Silicon的macOS SwiftUI屏幕亮度调整方案

你之前用的基于IOKit的屏幕亮度调整方法在Apple Silicon机型上失效,核心原因是ARM架构Mac对IOKit的沙箱访问限制。下面是能同时适配两种架构的可行方案:

1. 配置必要权限

先在项目的Entitlements文件里添加com.apple.security.device.display-brightness权限,将值设为YES——这是应用获取屏幕亮度调整权限的必要步骤。

2. 编写兼容的亮度调整函数

改用Core Graphics提供的CGDisplaySetBrightness API,这个接口在Intel和Apple Silicon机型上都能正常工作,不用直接操作IOKit:

import CoreGraphics

func setScreenBrightness(to level: Float) {
    // 获取所有活跃屏幕的ID
    let activeDisplays = CGDisplayCopyAllDisplayIDs() as [CGDirectDisplayID]
    for displayID in activeDisplays {
        // 先判断当前屏幕是否支持亮度调整
        if CGDisplaySupportsBrightness(displayID) {
            // 设置亮度,取值范围0.0(最暗)到1.0(最亮)
            let result = CGDisplaySetBrightness(displayID, level)
            if result != .success {
                print("屏幕\(displayID)亮度调整失败,错误码: \(result.rawValue)")
            }
        }
    }
}

// 调用示例:将亮度设为50%
setScreenBrightness(to: 0.5)

额外注意事项

  • 亮度值超出0.0-1.0范围时,系统会自动截断到有效区间。
  • 如果应用开启了沙箱,必须确保Entitlements权限配置正确,否则会出现权限不足的错误。
  • 部分外接显示器可能不支持软件调整亮度,CGDisplaySupportsBrightness可以帮你过滤这类屏幕。

内容的提问来源于stack exchange,提问作者Emil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:35:14