2013-03-13 1 views
1

Est-il possible de personnaliser les apparences NSMenu, par exemple, la transparence, la couleur de fond ou couleur de premier plan en utilisant l'API publique "S (comme Dock d'Apple clic droit Menu) ??Personnalisez NSMenu (comme le menu contextuel du Dock d'Apple)?

Après beaucoup de recherche que j'ai trouvé un peu de code où ils utilisent des API privées pour rendre le menu sombre !!!

Répondre

1

Je pense que vous aurez plus de chance si vous utilisez simplement une vue personnalisée que vous codez pour regarder comme vous voulez et se comporter comme un menu. Un exemple de projet, CustomMenus, qui illustre cette technique, est un compagnon de l'un des WWDC 2010 session videos, Session 145, "Key Event Handling in Cocoa Applications"

+0

Oui, c'est vrai. Mais si j'utilise une vue personnalisée, alors je dois gérer manuellement toute la validation de menuItems (c'est-à-dire activer/désactiver la vue) + la gestion des sous-menus + la zone de suivi et tous ces trucs. Si aucune autre alternative n'est là, alors je dois aller avec cette approche seulement !!! –

0

Je ne sais pas si vous avez décidé d'aller avec la solution de tirer les vues vous-même, mais il y a une API privée qui peut être utilisé pour ce faire:

MenuRef m = [[menu _menuImpl] _principalMenuRef]; 
    if (m) { 
     char on = 1; 
     SetMenuItemProperty(m, 0, 'dock', 'dark', 1, &on); 
    } 

Il y a une Github project qui met en œuvre ce qui fonctionne essentiellement comme drop-in category sur NSMenu et permet d'assombrir avec une seule propriété.

C'est sans aucun doute une mauvaise idée car il utilise des API privées qui peuvent ou peuvent ne pas rompre avec les mises à jour futures OS, mais il semble être la façon dont le menu du dock fonctionne.

Questions connexes