【macOS】【Swift】不让App采用macOS的外观风格,直接保持白色背景,怎么处理?

【macOS】【Swift】不让App采用macOS的外观风格,直接保持白色背景,怎么处理?

如果你希望你的 macOS App 显示的文字不跟随系统的浅色/深色模式

而是始终使用白色背景(即强制浅色模式),

你可以通过设置 App 或特定视图的 appearance 来实现。


✅ 方法一:设置整个 App 为浅色外观

在你的 App 启动时(例如 AppDelegateapplicationDidFinishLaunching 方法中),设置:

复制代码
NSApp.appearance = NSAppearance(named: .aqua)

这会让整个 App 强制使用浅色外观,无论系统设置是浅色还是深色模式


✅ 方法二:只设置某个视图为浅色外观

如果你只想让某个视图(例如 NSTextView)保持浅色背景,可以只设置该视图的 appearance

复制代码
textView.appearance = NSAppearance(named: .aqua)

这样其他部分仍然可以跟随系统外观,只有这个视图保持浅色。


✅ 方法三:在 SwiftUI 中设置(如果使用的是 SwiftUI)

复制代码
import SwiftUI

@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .preferredColorScheme(.light) // 强制浅色模式
        }
    }
}

✅ 效果

  • App 或视图始终使用浅色外观。

  • 背景为白色,文字为黑色。

  • 用户即使在系统设置中启用了深色模式,App 也不会变暗。


✅ 总结

方式 适用范围 代码示例
设置整个 App 为浅色 全局 NSApp.appearance = NSAppearance(named: .aqua)
设置某个视图为浅色 局部 textView.appearance = NSAppearance(named: .aqua)
SwiftUI 强制浅色 SwiftUI App .preferredColorScheme(.light)

✅ 推荐方案

  • 如果你希望整个 App 始终保持白色背景,推荐设置:
    NSApp.appearance = NSAppearance(named: .aqua)

  • 如果你只想让 RTF 阅读区域保持白色背景,只设置:
    textView.appearance = NSAppearance(named: .aqua)
    即可。