Je voudrais avoir un NSMenu
avec plusieurs NSMenuItem
s dedans. Ces articles doivent se comporter comme des NSMenuItem
s "normaux", à une exception près: J'aimerais pouvoir dessiner le contenu (c'est-à-dire le "premier plan") de chaque article par moi-même.Façon simple d'implémenter des vues personnalisées NSMenuItem dessinées
qui est:
Je voudrais le système d'exploitation pour tirer le clou bleu quand je passe la souris avec la souris, tracez la coche ou tableau de bord (pour signifier « sélectionné »/"partie multi -sélection"). De plus, je voudrais un comportement "normal", c'est-à-dire un comportement souris/clavier intégré au menu.
Je voudrais attirer le « contenu » me: Idéalement, je suppose que je dois mettre en œuvre/remplacer une seule méthode
drawMenuItem:withCGContext:inRectangle:withTextColor
, qui obtient essentiellement l'élément, leCGContext
attirer dans leNSRect
de l'article, et la couleur du texte qui serait utilisé par Mac OS s'il dessinait l'article lui-même.
Je sais que (suspect très stronlgy) que mon souhait est sans doute trop, mais je serais parfaitement bien avec quelque chose adéquate (par exemple, je pouvais imaginer aller chercher le NSRect
de moi-même NSMenuItem
, obtenir la couleur en utilisant quelque chose comme [NSColor selectedMenuItemTextColor]
, et le contexte en utilisant quelque chose comme [NSContext currentContext]
). J'ai bien sûr considéré Apple's instruction on this. Cependant, cela empêche le menu de dessiner l'arrière-plan surligné en bleu et la coche. De plus, autant que je puisse voir, je devrais mettre en œuvre, par ex. mouseUp
moi-même. Pour résumer: existe-t-il un moyen d'obtenir un menu (presque) entièrement fonctionnel, où je ne personnalise que le contenu où se trouve habituellement le titre de l'élément de menu (peut-être même sans les vues personnalisées)?
Vous ne pouvez pas définir l'image de l'élément de menu? – Willeke
@Willeke J'y ai réfléchi, mais j'étais un peu hésitant car je sais maintenant si c'est à ça que l'image a été conçue à l'origine. De plus, je ne savais pas s'il était facile de changer dynamiquement la couleur de premier plan, en se basant sur l'état "highlight" du 'NSMenuItem'. – phimuemue