按传统的 AppKit 开发来说,给 macOS 添加常见的「Preferences」设置面板需要颇多步骤,包括添加 MenuItem,新建 Window,你需要在代码和 Storyboard 之间来回穿梭。
在换用 SwiftUI 开发之后才发现,给 macOS App 添加设置面板是如此简单,总共分 2 步:
1. 编写一个 SettingView
如同正常的开发 View 一般,创建一个给 Setting 使用的 View 即可,这里我添加了 TabView 来做分类处理:
struct SettingView: View {
var body: some View {
TabView {
Text("General")
.tabItem {
Label("General", systemImage: "gear")
}
Text("User")
.tabItem {
Label("User", systemImage: "person")
}
}
.frame(width: 400, height: 200)
}
}
@main
中添加一个 Settings
2. 在 @main
struct SOSApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
#if os(macOS)
Settings {
SettingView()
}
#endif
}
}
此处添加
#if os(macOS)
系统判断是因为我的 APP 同时支持 iOS 和 macOS,不加区分的话 iOS Target 无法通过编译。
至此工作完结,Build 后就能看到你的 APP 已经添加了「偏好设置」菜单项,苹果甚至已经帮你把菜单名做好本地化,并且配置上默认快捷键了。
点击查看设置面板:
