2011-06-09 48 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