swift 启动时从macOS菜单栏中隐藏应用图标

rdlzhqv9  于 2023-05-05  发布在  Swift
关注(0)|答案(2)|浏览(229)

我只做了一个macOS MenuBar app,那么当它启动时,你如何从macOS dock中隐藏应用程序的图标?
我没有看到任何地方解释这一点,也没有发现任何SwiftUI API/与AppDelegate的交互。

cuxqih21

cuxqih211#

您需要在Info.plist中将以下属性设置为YES
您可以在文档here中找到它。
或者您可以手动编辑Info.plist并添加以下密钥:

<key>LSUIElement</key>
<true/>

你可以在这里读到

  • LSUIElement(Boolean - macOS)* 指定应用是否作为代理应用运行。如果此键设置为YES,Launch Services将应用程序作为代理应用程序运行。座席应用程序不会显示在Dock或“强制退出”窗口中。虽然它们通常作为后台应用程序运行,但如果需要,它们可以进入前台以呈现用户界面。单击属于代理应用程序的窗口会使该应用程序向前处理事件。

Dock和loginwindow是作为代理应用程序运行的两个应用程序。

klr1opcd

klr1opcd2#

您可以使用Xcode Info Tab的参数隐藏应用程序的图标。这里有一个如何做到这一点的例子。
但是,通过实现以下代码,您可以通过编程方式在Dock中隐藏应用程序的图标。

import SwiftUI

@available(macOS 13.0, *) @main struct YourApp : App {
               
    var body: some Scene {
        let _ = NSApplication.shared.setActivationPolicy(.prohibited)
        
        MenuBarExtra("", systemImage: "apple.logo") {
            Button("Quit") { 
                NSApplication.shared.terminate(nil) 
            }
        }
    } 
}

相关问题