移除 Scene 的所有 command。
SwiftUI 和 macOS
移除 macOS 預設的選單列
所有的 Scene type,如:WindowGroup、Window ⋯⋯ 都有預設的一組 command,這裡的 command 指的是 Mac 螢幕上方的選單列中的功能。只要對 Scene 使用 commandsRemoved()
就可以移除這些預設的 command。
Demo
當我們沒特別對 macOS app 的 menu bar 做處理時,Mac 螢幕的上方會秀出所有預設的 command 在選單列中。
macOS 預設的選單列
只要對 Scene 使用 commandsRemoved()
就可以移除這些預設的 command。
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.commandsRemoved()
}
}
重 Run 會發現所有的選單都消失了,只剩下最基本的 App 自己名字的選單。
macOS App 移除所有 command 的選單列
討論
看到這裡可能會想,沒事為什麼要讓這些預設的 command 都消失?舉個例子,有時候我們可能會有特別的需求,某個視窗在被 init 的時候,會需要帶值進去,但如果使用者使用了預設的 command「New Window」那就不可能帶值 init,我們的視窗可能會有顯示上的 bug 或直接閃退,這時我們只能透過程式來開這個視窗,並用 commandsRemoved()
來移除預設的 command。
關於 XcodeProject
XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。