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

如何在Swift中通过代码设置macOS桌面壁纸?

在macOS应用中用Swift设置桌面壁纸的方法

当然可以实现,核心是使用**NSWorkspace**类的相关API,具体步骤如下:

1. 禁用沙箱

在Xcode的项目设置中,找到「Signing & Capabilities」标签,去掉「App Sandbox」的勾选——这一步是必须的,沙箱会限制应用修改系统桌面设置的权限。

2. 具体实现代码

通过NSWorkspace.shared.setDesktopImageURL(_:for:options:error:)方法即可完成壁纸设置,示例代码如下:

import Cocoa

func setDesktopWallpaper(imageURL: URL) {
    let workspace = NSWorkspace.shared
    let screens = NSScreen.screens
    
    for screen in screens {
        do {
            try workspace.setDesktopImageURL(imageURL, for: screen, options: [:])
            print("成功设置屏幕\(screen.localizedName)的壁纸")
        } catch {
            print("设置壁纸失败:\(error.localizedDescription)")
        }
    }
}

// 调用示例:替换为你的图片本地URL
if let imagePath = Bundle.main.path(forResource: "wallpaper", ofType: "jpg"),
   let imageURL = URL(fileURLWithPath: imagePath) {
    setDesktopWallpaper(imageURL: imageURL)
}

代码说明

  • NSWorkspace.shared:获取系统工作区的单例实例,负责处理桌面相关系统操作。
  • NSScreen.screens:获取当前所有显示的屏幕,支持给多屏设备统一设置壁纸。
  • setDesktopImageURL方法:接收图片URL、目标屏幕、配置选项(传空字典使用系统默认设置),通过do-catch捕获可能的错误(比如图片不存在、权限不足等)。

3. 额外配置说明

如果需要自定义壁纸的显示样式(如拉伸、平铺、居中),可以在options参数中传入NSWorkspace.DesktopImageOptionKey相关配置,示例如下:

let displayOptions: [NSWorkspace.DesktopImageOptionKey: Any] = [
    .imageScaling: NSImageScaling.scaleProportionallyUpOrDown.rawValue,
    .fillColor: NSColor.black
]
// 使用时将options参数替换为displayOptions即可

注意:网络图片需要先下载到本地,生成本地文件URL后再传入方法,直接使用网络URL无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:01:21