Xcode / plist - 运行 应用程序始终在 Dark/Light macOS 主题中

Xcode / plist - run application always in Dark/Light theme on macOS

有一个 属性 可以让应用程序 运行 始终处于深色模式 -- UIUserInterfaceStyle

问题是......它在 macOS 上不起作用。

我试过设置

文件内部修改正确:

<key>UIUserInterfaceStyle</key>
<string>Light</string>

但结果总是一样的 - 它只是不起作用,应用程序以主题的系统配置运行。

Xcode: Version 11.3.1 (11C504)

MacOS: 10.15.2 (19C57) Catalina

App is based on SwiftUI

第一个解决方案

尝试从设备或模拟器中卸载该应用程序。确保你清理了项目。右边的键确实是'Light',区分大小写。

好的,如果这不起作用,您可以做其他事情来达到相同的结果。

第二种解决方案

AppDelegatesdidFinishLaunchingWithOptions

中调用以下代码
if #available(iOS 13, *) {
    window.overrideUserInterfaceStyle = .light
}

请让我知道这是否适合您。

问题是 UIInterfaceStyle 是 UIKit 的一个特性。它适用于 tvOS/iOS。它在 MacOS 上什么都不做。您正在编写 MacOS 应用程序,而不是 iOS 应用程序。因此,您对 Info.plist 的更改自然无效。

在 MacOS 上选择退出 light/dark 模式的方式完全不同,记录在此处:

https://developer.apple.com/documentation/appkit/nsappearancecustomization/choosing_a_specific_appearance_for_your_macos_app

基本上你想使用 NSRequiresAquaSystemAppearance 键(尽管最好只采用暗模式兼容性)。

如果您正在寻找完整的 SwiftUI 版本:

import SwiftUI

@main
struct SwiftUI_Football_GridApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView().preferredColorScheme(.light)
        }
    }
}