2012-04-19 48 views
0

我正嘗試在可可應用程序中創建一個假菜單欄。我已經能夠實現我需要的95%,只有菜單欄不匹配mainMenu。請參閱以下屏幕截圖。如何在無邊界窗口內嵌入NSMenu來創建假菜單欄

我在xib中使用「彈出按鈕」對象來嘗試模擬系統菜單欄。問題是它是一個彈出菜單,看起來不像mainMenu。此外,標題菜單項不會滿足要求,並且彈出菜單具有與菜單標題重疊的圓角。所以,它很近,但沒有雪茄。

是否可以在與默認系統菜單欄匹配的無邊界窗口內創建假菜單欄?如果是這樣,怎麼樣?

我也試過使用NSStatusItem,默認情況下,它與系統菜單欄的匹配比我用按鈕可以實現的更接近,但是我無法將NSStatusItem嵌入到窗口中。

理想情況下,如果有方法直接在Windows視圖中嵌入NSMenu,那將是最佳解決方案。

fakemenubar

fakemenubar

回答

1

你需要創建一個外觀和行爲都像頂級項自定義按鈕或視圖,然後分配一個NSMenu到您的視圖的menu插座。

然後,您可以實現您的視圖menuForEvent:,並返回你的菜單時按下鼠標時,或者調用NSMenu類方法+popUpContextMenu:withEvent:forView:單擊鼠標時。順便說一下,這似乎是一個有點奇怪的想法。你爲什麼想這樣做?

+0

感謝羅布。我會盡力實施你的建議。我知道這可能是針對HIG,但我需要它來爲代理應用程序展示一個簡約的菜單欄(UIElement = YES,在plist中)。最終假菜單欄與UIElement設置一起允許我有一個菜單欄,但沒有停靠欄圖標,並從命令+選項卡隱藏我的應用程序。所以,菜單欄和無碼字。成爲代理應用程序的根本原因是在選擇代理應用程序窗口時減少輕彈。我會在完成時提供一個鏈接,併發布一些代碼。 – rgbworld 2012-04-20 19:14:56