如何获取适配当前配色方案的macOS壁纸图片URL?
获取匹配macOS当前配色方案的桌面壁纸URL
可以通过读取系统偏好设置的相关键值来获取对应明暗模式的壁纸URL,以下是具体实现思路和代码示例:
核心思路
NSWorkspace.shared.desktopImageURL(for:)确实只会返回浅色模式的壁纸路径,要获取对应当前模式的变体,需要从NSUserDefaults中读取屏幕对应的壁纸配置,其中包含了明暗模式各自的壁纸URL。
代码实现
import Cocoa func currentDesktopWallpaperURL(for screen: NSScreen) -> URL? { // 获取屏幕的UUID作为键值标识 guard let screenUUID = screen.deviceDescription[.init("NSScreenNumber")] as? NSNumber else { return nil } let defaults = UserDefaults.standard let key = "Desktop\(screenUUID)" // 读取当前屏幕的壁纸配置字典 guard let wallpaperConfig = defaults.dictionary(forKey: key) else { return nil } // 判断当前系统是否处于深色模式 let isDarkMode = UserDefaults.standard.bool(forKey: "AppleInterfaceStyle") // 根据模式选择对应的URL let urlKey = isDarkMode ? "Dark" : "Light" return wallpaperConfig[urlKey] as? URL } // 使用示例 if let mainScreen = NSScreen.main, let wallpaperURL = currentDesktopWallpaperURL(for: mainScreen) { print("当前匹配配色的壁纸URL:\(wallpaperURL)") }
说明
- 系统会为每个屏幕存储独立的壁纸配置,键名格式为
Desktop<屏幕UUID>,其中包含Light和Dark两个子键,分别对应明暗模式的壁纸URL。 - 通过
AppleInterfaceStyle键可以判断当前是否处于深色模式(存在且对应值为Dark时返回true,否则为浅色模式)。 - 沙盒应用中需要额外配置读取系统偏好设置的权限,才能正常获取这些键值。
内容的提问来源于stack exchange,提问作者Kushagra
相关产品推荐
相关产品推荐

