2015-04-04 1 views
29

Je travaille sur une application qui a un NSView personnalisé sur un NSStatusBar qui effectue tout le dessin lorsque l'utilisateur clique dessus. Mais voici le problème, la couleur que je dessine actuellement comme la couleur de fond de la vue n'est pas la même que la couleur bleue du système.Comment accéder à l'élément de menu sélectionné dans la couleur bleue?

couleur de mon application:
enter image description here

couleur de l'élément de menu de Twitter (système):
enter image description here

Comme vous le voyez bien, ma couleur bleue est beaucoup plus léger que le système. Voici le code que je suis actuellement en utilisant (et a parfaitement fonctionné sur les versions antérieures à Yosemite):

[[NSColor selectedMenuItemColor] set]; 
NSRectFill(rect); 

J'ai même couleur essayé choisir la couleur de l'élément de menu, mais il semble que la couleur est affectée par le fond d'écran ci-dessous la barre de menu.
Des idées sur la façon d'obtenir l'apparence du système?

+0

Etes-vous sûr que Twitter utilise 'selectedMenuItemColor'? Peut-être qu'ils utilisent quelque chose de différent? – Eun

+0

Je montrais juste un exemple qui utilise la couleur du système pour les éléments de la barre de menu sélectionnée, et Twitter utilise la même couleur que les autres widgets intégrés, comme le Wi-Fi et la batterie. J'ai utilisé 'selectedMenuItemColor' sur les anciennes versions d'OS X et j'ai toujours travaillé comme prévu, pas sur Yosemite. –

Répondre

6

Comme vous l'avez dit, dans Yosemite, les quais, les barres d'état, etc. sont affectés par tout ce qui se trouve derrière eux. Essayez d'activer System Preferences > Accessibility > Display > Reduce Transparency et vous verrez à quoi ressemble votre couleur sans cette fonction./

+0

Cela semblait être une bonne idée, mais malheureusement, cela ne fonctionne pas. Quand je l'allume à nouveau les couleurs sont loin. –

+0

je voulais dire, le désactiver * (la réduction de la transparence) –

2

Voici une idée - Peut-être que vous devriez utiliser l'effet Vibrancy et dériver de NSVisualEffectView. Je savais que j'ai vu un fil très similaire quelque part ici dans le passé, et il m'a fallu un certain temps pour le trouver. Ici, il est:

Trouble matching the vibrant background of a Yosemite NSMenuItem containing a custom view

Je pense que Matthes' answer to that question vous conduira à la résolution de votre problème. Assurez-vous de vérifier. J'espère que cela aidera - Bonne chance et rapport!