2017-11-10 266 views
0

我正在編寫一個狀態菜單應用程序,其中一個菜單項以其中一個大圖像爲中心。到目前爲止,它一直運行良好 - 直到我試圖在狀態菜單上設置最小寬度。具有最小寬度的NSMenu:按下⌥會導致自定義視圖忽略最小寬度

當我按下Option(選項)鍵時,如果沒有最小寬度,使用替代菜單項時,帶有圖像的自定義視圖會將其自身調整爲其大小。

下面是一些說明問題的圖像,在holding之前和之後。灰色是一種自定義視圖,應該伸展以覆蓋整個寬度。

before after

只要打開菜單的問題依然存在,甚至釋放後⌥,但消失時,菜單關閉並重新打開,直到⌥再次按下。

我的系統版本是Mac OS X v10.12.6(Sierra)。我對視圖自動尺寸調整掩碼是這樣的:

let autoresizingMask: NSView.AutoresizingMask = [.minXMargin, .minYMargin, .maxXMargin, .maxYMargin, .width, .height] 

編輯:如果我做的菜單項爲中心的視圖,而不是伸展(不.width.height),它仍然向左移動。

回答

0

我剛剛意識到解決方案非常簡單。我只需要將自定義視圖的框架寬度設置爲狀態菜單的最小寬度。

let r = NSRect(x: 0, y: 0, width: statusMenuMinWidth, height: h)