2017-11-10 3 views
0

Ich schreibe eine Statusmenü-App mit einem großen Bild, das in einem der Menüelemente zentriert ist. Bis jetzt hat es gut funktioniert - bis ich versuchte, im Statusmenü eine Mindestbreite einzustellen.NSMenu mit minimaler Breite: Drücken von ⌥ bewirkt, dass die benutzerdefinierte Ansicht die Mindestbreite ignoriert

Wenn ich die Taste ⌥ (Option) drücke, ändert sich die benutzerdefinierte Ansicht mit dem darin enthaltenen Bild auf die Größe, die es hätte, wenn keine Mindestbreite vorhanden wäre.

Hier sind einige Bilder, die das Problem vor und nach dem Halten von illustrating veranschaulichen. Die graue Farbe ist eine benutzerdefinierte Ansicht, die dehnen sollte, um die volle Breite abzudecken.

before after

Das Problem, so lange bestehen bleibt, wie das Menü geöffnet ist, auch nach ⌥ Loslassen, sondern geht weg, wenn das Menü geschlossen und wieder geöffnet, bis ⌥ erneut gedrückt wird.

Meine Systemversion ist Mac OS X v10.12.6 (Sierra). Meine automatischen Größen Maske für die Ansicht ist dies:

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

bearbeiten: Wenn ich die Ansicht zentriert im Menüpunkt machen und strecken nicht (ohne .width und .height), bewegt er sich noch nach links.

Antwort

0

Ich habe gerade festgestellt, dass die Lösung sehr einfach ist. Ich musste nur die Rahmenbreite meiner benutzerdefinierten Ansicht auf die minimale Breite des Statusmenüs einstellen.

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