macos - 如何制作一个 MenuBar 应用程序(使用 Swift),它不仅包含菜单项列表?

标签 macos swift

我是 OSX 开发的新手(我做过一些 iOS 的东西,但这是我的第一个 OSX 应用程序,也是我的第一个 Swift 应用程序)。

我找到了几个教程,介绍如何使用简单的菜单项列表制作 MenuBar 应用程序,如下所示:

simple menu

但我正在寻找更像 Evernote、Google Drive 或 Mint 的 MenuBar 窗口的东西:

window

我认为,要执行类似后者的操作,我需要一个常规的 NSWindow,它只需通过单击状态项来切换(对吗?),但我如何按照 Evernote 和 Google 的方式定位窗口?

我找到了 this question如果使用 Objective C 应用程序,它提供了几种获取状态项位置的方法,但我不确定如何将其转换为 Swift 应用程序。例如,一个答案建议使用以下方法在单击后获取状态项的框架:

[[[NSApp currentEvent] window] frame]

但是,在 Swift 中,NSApp.currentEvent 没有名为“window”的成员...

有谁知道用 Swift 编写的 MenuBar 应用程序示例,它不仅包含一个简单的菜单项列表?对于 Swift 来说,这样的事情是不可能的吗?


更新:
由于在 Objective C 中执行此类操作的示例和入门应用程序非常丰富,而关于如何在 Swift 中执行此操作的内容很少或根本没有,我最终放弃了 Swift 路线并构建了一个 Objective C 应用程序。我用这个作为开胃菜:https://github.com/shpakovski/Popup .它上手非常快速/容易,而且最终比 Swift 应用程序要少得多。

也许有一天 Swift 更成熟时,我会尝试使用该语言的另一种语言。

最佳答案

实际上,NSApplication.sharedApplication().currentEvent?.window 看起来不错。

关于macos - 如何制作一个 MenuBar 应用程序(使用 Swift),它不仅包含菜单项列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381563/

相关文章:

macos - 如何将admob广告添加到Xamarin IOS

macos - 如何检查 Java JDK 是否安装在 Mac 上?

macos - 无法在 Vim 中映射 <S-CR>

macos - 如何在 macOS Sierra 上列出文件关联?

ios - 将对象保存为用户默认值

ios - 减小 SpriteKit 节点的大小

objective-c - 如何替换 cocoa 中的第一个字节

ios - 未调用委托(delegate)字段时实现 `DelegateProxy` (RxSwift/RxCocoa) `delegate`

ios - 文本字段中的 swift 3 tableView 复制自身

swift - 单元格的大小不等于 Collection View 的大小