6

内置电池、Wi-Fi、声音等,Apple 提供的状态项,可以通过使用 cmd + 单击并拖动来拖动到菜单上的任何位置:

如何在我自己的状态项中支持类似的功能?

4

1 回答 1

11

有两种方法可以获取菜单栏右侧的菜单。官方支持的方式是在您的应用程序中创建一个NSStatusItem。另一种方法是创建一个NSMenuExtra. 您已经注意到一个区别:NSStatusItem菜单是固定的,而附加菜单可以通过 cmd 拖动来移动。

另一个主要区别,也是不正式支持 3rd-party menu extras 的原因是,与状态项(作为单独的应用程序运行)不同,menu extras 被加载到 SystemUIServer 进程的地址空间中。这意味着如果他们失控并崩溃,他们可以取消 UI。

您可以在 中查看安装在系统上的 Menu Extras /System/Library/CoreServices/Menu Extras。仍然可以创建您自己的并让操作系统加载它们,但是如果您尝试发布结果,您会遇到问题。最好去 bugreport.apple.com 让他们知道 NSStatusItems 应该是可拖动的。

Wikipedia 上有更多关于 Menu Extras的信息,包括一些关于构建自己的教程的链接。

于 2012-07-03T22:27:59.013 回答