【macOS】【Swift】不让App采用macOS的外观风格,直接保持白色背景,怎么处理?
如果你希望你的 macOS App 显示的文字不跟随系统的浅色/深色模式,
而是始终使用白色背景(即强制浅色模式),
你可以通过设置 App 或特定视图的 appearance
来实现。
✅ 方法一:设置整个 App 为浅色外观
在你的 App 启动时(例如 AppDelegate
的 applicationDidFinishLaunching
方法中),设置:
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)
即可。