在macOS上创建菜单栏应用
菜单栏应用程序是指位于macOS菜单栏(即状态栏)上的应用程序。 它提供对关键功能的即时访问,以及在登录会话期间始终可访问的功能。
创建状态栏项目
我们使用NSStatusBar.system().statusItem(withLength: -1)
从系统请求状态栏项目。 请注意,如果状态栏已经包含许多其他状态栏项目,则可能会失败(返回nil)。
成功获取状态栏项后,您将获得一个NSButton作为要放在菜单栏上的UI元素。 您需要通过提供图像以及设置按钮的目标和操作来对其进行配置。
所有这些都应在应用启动期间完成,因此在应用委托中,我们具有:
请注意,必须使用强引用来保留系统返回的状态栏项目对象。 否则,它将在以后释放,并且菜单栏上将不会显示任何内容。
显示菜单
要显示菜单,您需要提供放置菜单对象的参考点,在这种情况下为状态栏按钮。 然后,我们创建一个鼠标事件,并使用popUpContextMenu(_:with:for:)
出菜单。
信息清单设置
如果您的应用程序仅是菜单栏(类似于Dropbox macOS客户端),则需要在Info.plist中设置Application is agent = YES
,以便省略Dock的应用程序图标和左上角的应用程序菜单。
下载样例项目