2015-07-06 9 views
5

Sto utilizzando un NSToolbarItemGroup per raggruppare insieme un set di NSToolbarItem. Attualmente c'è uno spazio di 2pt tra ogni elemento nel gruppo, idealmente mi piacerebbe che fossero completamente fusi visivamente come un NSSegmentedControl.NSToolbarItemGroup senza spaziatura

Dopo aver ispezionato l'applicazione Mail, sembra che stiano utilizzando un NSToolbarItem personalizzato contenente un NSSegmentedControl. L'ho provato in passato, ma non riesco a capire come ottenere le singole etichette sotto ogni componente e ad avere ciascun componente visualizzato singolarmente nel menu 'overflow'.

aspetto attuale:

enter image description here

sguardo desiderata:

enter image description here

So 'Centra' che viene tagliato, questa è solo una rapida implementazione.

risposta

1

Posso suggerire di utilizzare NSSegmentControl aggiunto a un NSToolbarItem come in un'immagine qui sotto.

enter image description here image

avete bisogno di qualche etichette sotto i tasti (come "Reply", ecc). Per ottenere ciò è possibile impostare la proprietà etichetta NSToolbarItem e giocare con lo spazio tra le parole.

attributes inspector

+0

Grazie. Ho provato questa soluzione, ma c'è un'importante difetto con l'implementazione. Prendiamo Mail.app come esempio (potrebbe essere necessario regolare la barra degli strumenti per riprodurre questo). Si noti che se si ridimensiona la finestra in modo che il pulsante (Rispondi | Rispondi a tutti | Avanti) entri nell'overflow. Se faccio ciò che stai suggerendo, ci sarà solo una voce di menu - ma in Mail.app vedrai un oggetto separato per ciascuno degli elementi segmentati. – xizor

1

È possibile aggiungere un oggetto NSToolbarItem alla barra degli strumenti, e quindi impostare il NSViewController come questo (usando Swift):

runStatus.view = RunStatusView() 

dove "runStatus" è il nome del @IBOutlet per NSToolbarItem e "RunStatusView" è un oggetto NSView con un override nel metodo drawRect. È anche possibile specificare la larghezza e l'altezza di NSView; per esempio, forzare la larghezza di essere costante a 125:

runStatus.minSize = NSSize(width: 125, height: 32) 
runStatus.maxSize = NSSize(width: 125, height: 32) 

Questo può rendere le voci NSToolbar appaiono più vicini gli uni agli altri, a seconda di cosa si sta disegnando su di loro. Infine, se non riesci ancora ad ottenere esattamente ciò che desideri, imposta il gruppo di pulsanti su un singolo NSToobarItem, e in "RunStatusView" (usando l'esempio precedente) disegna comunque come desideri e sostituisci l'evento mouseDown (anche in "RunStatusView") per vedere dove esattamente l'utente sta facendo clic. Poi c'è un NSToolbarItem che agisce essenzialmente come più pulsanti, e hai il controllo totale e puoi farlo funzionare come vuoi.