2015-06-17 20 views
6

Durante lo sviluppo di un'app per la barra dei menu, ho difficoltà a trovare il metodo preferito per rendere l'app davvero bella. Avrei pensato che i controlli Apple avrebbero essenzialmente gestito questo per la maggior parte, ma non sembra.Come far apparire bene l'app della barra dei menu con "Dark Mode" in Yosemite?

Qual è il metodo preferito per accertarsi che l'app di un menu sia in buone condizioni sia in modalità chiara che in modalità scura? Mi mancano alcune funzionalità di controllo che facilitano questo più facilmente o devo rilevare manualmente la modalità e modificare i controlli in modo appropriato?

risposta

7

I have a menubar app, e non ho dovuto fare nulla per farlo sembrare buono nel tema scuro.

tema della luce:

Light theme

tema scuro:

Dark theme

Le cose più importanti che dovete fare sono:

  1. Utilizzare i colori di sistema (ad es. [NSColor textColor], [NSColor textBackgroundColor]. Questi si adattano automaticamente con i vari temi. Vedi la sezione Color and Typography delle linee guida per l'interfaccia umana di OS X di Apple.

  2. Usa immagini modello. Questi si adattano anche ai cambiamenti di colore. Consulta lo System-Provided Images section delle linee guida per l'interfaccia umana di OS X di Apple.

Vale la pena notare che Apple non ha reso facile per rilevare a livello di codice, che tema di colore è in esecuzione (ci sono alcuni trucchi, ma io non sono a conoscenza di alcun metodo sanzionato). La mia sensazione è che lo abbiano fatto intenzionalmente, quindi gli sviluppatori non fanno cose personalizzate per tema. Utilizzando i colori di sistema e le immagini dei modelli, non dovresti.

Aggiornamento: Progetto di esempio qui: https://github.com/zpasternack/MenuBarTest

+0

Ancora colpire alcune pareti qui. Potresti fornire un codice di esempio? Questo è strano perché uso un pulsante con un modello di immagine e non sembra buono al buio, non importa quello che faccio adesso. – ylluminate

+0

Nell'interfaccia utente degli screenshot precedenti, non esiste praticamente alcun codice. Questi punti di vista sono stati creati in IB. Ma c'è un progetto Xcode scheletrico su GitHub, vedi la mia modifica sopra. – zpasternack

3

Bene, non hai spiegato (o mostrato) in che modo sembra male. Probabilmente, stai usando un'immagine normale non stampata per la sua icona. Dovresti usare un'immagine modello, che è un'immagine la cui unica parte significativa è la maschera alfa. Dite al sistema che si tratta di un'immagine modello o nominandola con un suffisso "Template" (ad esempio "FooTemplate.png") o chiamando -setTemplate: su di esso.