objective-c - 在 NSMenuItem 中使用 NSView 伪造 NSWindow

标签 objective-c cocoa nsmenuitem nsstatusitem

在我开始之前,我应该说我知道这看起来不太可能,但我认为值得一试。

我现在正在开发的一个应用程序是 Mac 状态栏应用程序。它在菜单栏中有一个 NSStatusItem,当单击它时,它将显示一个带有弹出窗口外观的自定义窗口(就像在 iPad 上或 Fantastical 在 Mac 上一样。)无论如何,我通过在状态项菜单中插入一个 nsmenu 项开始测试它。该 View 为其窗口的背景色设置了清晰的颜色。但是,正如您在下面的图片中看到的那样,这仍然不太有效

enter image description here

  1. item上下还有一条白色细线
  2. 清晰区域不清晰,就像上面有模糊滤镜一样

除此之外,它的效果非常好。我只是不知道以前是否有人尝试过类似的事情,并想出如何克服这两个问题,这似乎是唯一阻止它工作的因素。

如果没有办法做到这一点,我可能不得不使用 NSStatusItem 的自定义 View ,这样我就可以在屏幕上获取坐标,将我自己的窗口定位在 NSStatusItem 下方。

最佳答案

假窗口似乎是一种相当奇怪的方法。为什么不只弹出一个常规窗口?我建议 MAAttachedWindow:http://mattgemmell.com/2007/10/03/maattachedwindow-nswindow-subclass

关于objective-c - 在 NSMenuItem 中使用 NSView 伪造 NSWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287002/

相关文章:

swift - 从函数中打开 NSViewController。菜单栏应用

cocoa - NSMenuItem 数字气泡?

objective-c - 检查图像(NSImage)分辨率是否泄漏内存

ios - 如何在 Cocoa Touch 中任意两个 ViewController 之间转换?

cocoa - NSOpenPanel - 设置文件类型?

objective-c - 使用 NSViewAnimation 和 NSAnimationEaseOut 奇怪的行为

c++ - 带有汇编器插入的跨平台并行应用程序

ios - 从 UICollectionView 的 viewForSupplementaryElementOfKind 获取 NSFetchedResultsController 部分对象

objective-c - NSSet 实现

cocoa - NSMenuItem 中的动画进度条