在macOS上创建菜单栏应用

菜单栏应用程序是指位于macOS菜单栏(即状态栏)上的应用程序。 它提供对关键功能的即时访问,以及在登录会话期间始终可访问的功能。

创建状态栏项目

我们使用NSStatusBar.system().statusItem(withLength: -1)从系统请求状态栏项目。 请注意,如果状态栏已经包含许多其他状态栏项目,则可能会失败(返回nil)。

成功获取状态栏项后,您将获得一个NSButton作为要放在菜单栏上的UI元素。 您需要通过提供图像以及设置按钮的目标和操作来对其进行配置。

所有这些都应在应用启动期间完成,因此在应用委托中,我们具有:

请注意,必须使用强引用来保留系统返回的状态栏项目对象。 否则,它将在以后释放,并且菜单栏上将不会显示任何内容。

显示菜单

要显示菜单,您需要提供放置菜单对象的参考点,在这种情况下为状态栏按钮。 然后,我们创建一个鼠标事件,并使用popUpContextMenu(_:with:for:)出菜单。

信息清单设置

如果您的应用程序是菜单栏(类似于Dropbox macOS客户端),则需要在Info.plist中设置Application is agent = YES ,以便省略Dock的应用程序图标和左上角的应用程序菜单。

下载样例项目