objective-c - 如何获取 NSStatusItem 的屏幕位置

标签 objective-c cocoa macos nsstatusitem

我对 mac osx 中 cocoa 的 NSStatusItem 有疑问。如果您查看名为 snippets 的 mac 应用程序(请参阅 http://snippetsapp.com/ 中的电影)。你会看到,一旦你点击你的状态栏图标,一个完美对齐的 View /面板甚至窗口就会出现在图标下方。

我的问题是......如何像这个应用程序一样计算放置 NSWindow 的位置?

我尝试了以下方法:

  1. 子类 NSMenu
  2. 设置菜单第一项的 View 窗口(有效但足够了)
  3. 使用 addSubview 而不是图标到 NSStatusItem 这有效但不能超过 20px

最佳答案

为 NSStatusItem 提供一个 View ,然后获取该 View 窗口的框架。这在技术上算作 UndocumentedGoodness,所以如果有一天它坏了(例如,如果他们开始将窗口保持在屏幕外),请不要感到惊讶。

我不知道你所说的“不能再高到 20 像素”是什么意思。

关于objective-c - 如何获取 NSStatusItem 的屏幕位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301701/

相关文章:

ios - NSURLConnection 的错误代码 "-1009"是什么意思?

node.js - 在 MAC 上安装 bcrypt

ios - UIButton - 带图标的引导文本

iphone - 当 View 的类为 TPKeyboardAvoidingScrollView 时,UIButton 不会在模拟器上显示

objective-c - 如何使 NSTextField 适合包含的 NSMutableAttributedString

swift - 处理来自 Swift 的 FSEventStreamRef API 中的选项

macos - 如何调试 Aquamacs

objective-c - 在这些平台和情况下切换到 Objective-C 是否可行?

objective-c - Objective-C : Calculate the standard deviation of an NSArray of NSNumber objects?

macos - NSDocument 向 NSViewController 发送事件的标准方法是什么?