如何在 macOS Catalyst 应用程序中为 NSToolbar 设置暗模式?

How to set dark mode for NSToolbar in macOS Catalyst app?

在我的 iOS/macOS 应用中,用户可以选择浅色和深色外观。

这是通过设置应用程序的 overrideUserInterfaceStyle 来完成的 window,例如

window.overrideUserInterfaceStyle = .dark

它在 iOS/iPadOS 上工作正常。

在 macOS (Catalyst) 上,应用程序使用 NSToolbar,它始终以系统设置中选择的模式出现,无论为 window 的 overrideUserInterfaceStyle 设置了什么(参见屏幕截图)。

由于这不是一个好的视觉印象,我想知道如何也为 NSToolbar 设置 light/dark 模式。

将值为 DarkUIUserInterfaceStyle 添加到您应用的 Info.plist。这将强制整个应用程序在 iOS 13+ 和 Mac Catalyst 上进入暗模式(您不需要设置 overrideUserInterfaceStyle)。

文档:https://developer.apple.com/documentation/bundleresources/information_property_list/uiuserinterfacestyle

这可以通过添加一个可以访问整个 AppKit 的 macOS 插件来完成 API。说明可以在这里找到: How to Access the AppKit API from Mac Catalyst Apps

然后您可以在运行时在那里设置所需的外观,例如:

NSApplication.shared.appearance = NSAppearance(named: .darkAqua)