2011-06-09 40 views
4

内的NSView假NSWindow在我开始我应该说我知道这似乎是一个长镜头,但我想这是值得一试。与NSMenuItem

一个应用程序,我现在我工作的是一台Mac应用程序状态栏。它在菜单栏中有一个NSStatusItem,点击后它将显示一个带弹出窗口的自定义窗口(就像在iPad上一样,或者像在Mac上的Fantastical一样)。无论如何,我通过在状态项目菜单中插入一个nsmenu项目来开始测试。该视图为其窗口上的背景颜色设置了清晰的颜色。然而,这仍然完全不是那么回事,你可以在PIC见下文

enter image description here

  1. 还有一个白色的小细线上面和项目
  2. 的无障碍空间,下面是不明确,它就像它有一个模糊的过滤器

除此之外,它的工作非常好。我只是不知道其他人是否曾尝试过这样的事情,并想出如何克服这两个问题,这似乎是唯一阻止这种工作的问题。

如果没有办法做到这一点,我可能不得不求助于使用的NSStatusItem自定义视图,所以我可以在屏幕上的坐标来定位NSStatusItem低于我自己的窗口。

+0

我对你的问题是:你是怎么得到菜单的那部分是清楚了吗?我的直觉是这是无法避免的; 'NSMenu'将模糊滤镜应用于其项目的背景,而不管绘制什么内容,但我首先感兴趣的是你如何到达这里。即使我使用清晰的视图并将其粘贴在“NSMenuItem”中,我仍然会获得完全白色的背景。特殊代码? – 2011-06-09 01:50:49

+0

在你调用的nsmenuitem视图里面[​​[self window] setBackgroundColor:[NSColor clearColor]] – 2011-06-09 01:52:30

+0

有趣。我会研究它... – 2011-06-09 02:25:18

回答

1

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

+0

它在nsstatusitem中增加了很多复杂性,因为必须使用自定义nsview,以便您可以获取屏幕坐标并在其下方放置一个窗口。我不反对这一点,我知道这是一个长镜头,但我不知道是否有办法以这种方式伪造。 – 2011-06-09 17:20:46