2015-07-06 7 views
5

Ich verwende eine NSToolbarItemGroup, um eine Gruppe von NSToolbarItems zu gruppieren. Momentan gibt es einen 2pt Abstand zwischen jedem Element in der Gruppe, idealerweise möchte ich, dass sie vollständig visuell ähnlich einem NSSegmentedControl zusammengeführt werden.NSToolbarItemGroup ohne Abstand

Nach der Überprüfung der Mail-Anwendung sieht es so aus, als ob sie ein benutzerdefiniertes NSToolbarItem verwenden, das ein NSSegmentedControl enthält. Ich habe das in der Vergangenheit versucht, aber ich kann nicht herausfinden, wie man individuelle Etiketten unter jeder Komponente bekommt und jede Komponente einzeln im "Überlauf" -Menü erscheinen lässt.

Aktuelle Aussehen:

enter image description here

gewünschte Aussehen:

enter image description here

Ich weiß, 'Zentriert' abgeschnitten wird, ist dies nur eine schnelle Umsetzung.

Antwort

1

Ich kann Ihnen empfehlen, NSSegmentControl zu einem NSToolbarItem wie in einem Bild unten hinzugefügt.

enter image description here image

Sie müssen einige Etiketten unter den Tasten (wie "Antworten" etc.). Um dies zu erreichen, können Sie NSToolbarItem label-property setzen und mit Leerzeichen zwischen Wörtern spielen.

attributes inspector

+0

Danke. Ich habe diese Lösung ausprobiert, aber es gibt einen großen Fehler bei der Implementierung. Nehmen wir Mail.app als Beispiel (Sie müssen möglicherweise die Symbolleiste anpassen, um dies zu reproduzieren). Beachten Sie, dass wenn Sie die Größe des Fensters so ändern, dass die Schaltfläche (Reply | Reply All | Forward) in den Überlauf geht. Wenn ich das mache, was Sie vorschlagen, gibt es nur einen Menüeintrag - aber in Mail.app sehen Sie einen separaten Eintrag für jeden der segmentierten Einträge. – xizor

1

Sie können ein NSToolbarItem Objekt in die Symbolleiste hinzufügen und dann den NSViewController wie folgt aus (mit Swift):

runStatus.view = RunStatusView() 

wo "runStatus" ist der Name des @IBOutlet für Das NSToolbarItem und "RunStatusView" ist ein NSView-Objekt mit einer Überschreibung für die DrawRect-Methode. Sie können auch die Breite und Höhe des NSView angeben. zum Beispiel zwingen, die Breite bei 125 konstant zu sein:

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

Dies kann die NSToolbar Elemente zueinander näher erscheinen, je nachdem, was Sie auf sie zeichnen.

Schließlich, wenn Sie immer noch nicht genau erhalten, was Sie wollen, dann machen Sie die Gruppe von Schaltflächen ein einzelnes NSToobarItem, und in "RunStatusView" (mit dem obigen Beispiel) zeichnen Sie es wie Sie wollen, und überschreiben Sie das mouseDown -Ereignis (auch in "RunStatusView") um zu sehen, wo genau der Benutzer gerade klickt. Dann gibt es ein NSToolbarItem, das im Wesentlichen wie mehrere Schaltflächen funktioniert, und Sie haben die totale Kontrolle und können es so verhalten, wie Sie wollen.