Ich möchte eine NSMenu
mit mehreren NSMenuItem
s darin haben. Diese Elemente verhalten sich wie "normal" NSMenuItem
s, mit einer Ausnahme: Ich würde gerne die Inhalte (d. H. Die "Vordergrund") jedes Elements auf eigene Faust zeichnen.Einfache Möglichkeit, benutzerdefinierte NSMenuItem-Ansichten zu implementieren
Das heißt:
I das Betriebssystem möchte die blaue Markierung zu zeichnen, wenn ich mit der Maus bewegen, um das Häkchen oder Strich ziehen (um anzuzeigen, „ausgewählt“/"Teil von Multi -Auswahl"). Außerdem möchte ich "normales", d. H. Menü-eingebautes Maus/Tastatur-Verhalten.
Ich mag die „Inhalte“ ich ziehen: Im Idealfall würde ich mir vorstellen, dass ich hätte implementieren/außer Kraft setzt eine einzige Methode
drawMenuItem:withCGContext:inRectangle:withTextColor
, die im Grunde das Element erhält, dasCGContext
in ziehen, dieNSRect
der Artikel und die Textfarbe , die von Mac OS verwendet werden würde, wenn es das Element selbst gezeichnet.
Ich weiß (sehr stronlgy vermuten), dass mein Wunsch, wahrscheinlich zu viel ist, aber ich würde mit etwas angemessen völlig in Ordnung sein (zB ich die NSRect
vom NSMenuItem
holen mir vorstellen könnte, den Erhalt der Farbe etwas mit wie [NSColor selectedMenuItemTextColor]
, und der Kontext mit etwas wie [NSContext currentContext]
).
Natürlich dachte ich Apple's instruction on this. Dies verhindert jedoch, dass das Menü den Hintergrund der blauen Hervorhebung und das Häkchen zeichnet. Soweit ich sehen konnte, würde ich z. mouseUp
ich selbst.
Um es zusammenzufassen: Gibt es eine Möglichkeit, ein (fast) voll funktionsfähiges Menü zu bekommen, in dem ich nur den Inhalt anpasse, wo normalerweise der Titel des Menüpunktes steht (möglicherweise sogar ohne benutzerdefinierte Ansichten)?
Können Sie das Bild des Menüelements nicht einstellen? – Willeke
@Willeke Ich dachte darüber nach, war aber etwas zögerlich, da ich jetzt weiß, ob das für das Bild ursprünglich gedacht war. Außerdem war ich nicht sicher, ob es einfach ist, die Vordergrundfarbe dynamisch zu ändern, basierend auf dem "Highlight" -Zustand des "NSMenuItem". – phimuemue