Hinzufügen einer Steuerungs- / Schaltflächenleiste am unteren Rand einer NSOutlineView, die als Quellenliste konfiguriert ist

8

Ich versuche, eine Schaltfläche am unteren Rand meiner NSOutlineView-basierten Quellenliste hinzuzufügen, wie sie in vielen Mac-Anwendungen (sowohl von Apple als auch von Drittanbietern) zu sehen ist, wie in diesen Screenshots zu sehen ist:

Um es textuell zu beschreiben, teilt die Steuerleiste den speziell gestalteten Hintergrund der Quellenliste (oder unter Yosemite, "vibrancy"), ohne den Inhalt der Quellliste zu überlappen. Um diesen Effekt zu reproduzieren, habe ich bisher folgende Methoden ausprobiert:

  1. Hinzufügen eines zusätzlichen "Auffüllens" mit der Höhe der Schaltflächenleiste am unteren Rand der Bildschirmansicht der Bildlaufliste der Quellenliste und Überlappen der Leiste mit der Quellenlistenansicht. Dies funktioniert nur, wenn der Hintergrund der Schaltflächenleiste undurchsichtig ist und die Bildlaufleiste nicht aus dem Weg bewegt wird.
  2. Verwendung von NSBox es mit ihren Hintergründen, die auf die NSColor festgelegt sind, die von der backgroundColor-Eigenschaft der Quellenliste bereitgestellt wird. Dies erfordert eine Menge von erzwungenen Neuzeichnungen, um korrekt zu zeichnen (insbesondere bei aktiven / inaktiven Zuständen des Fensters), sieht aber ansonsten perfekt aus. Ein ähnliches Verhalten wird mit einer benutzerdefinierten NSView Einstellung zum Zeichnen des Hintergrunds mit Farbverlauf angezeigt.

Gibt es eine andere Methode, um dies zu erreichen? # 2 ist das, dem ich am nächsten gekommen bin, aber angesichts der damit verbundenen Probleme ist es offensichtlich nicht dazu gedacht, von Entwicklern von Drittanbietern genutzt zu werden.

Dies mit Vibrancy in Yosemite zu tun, sollte einfach sein, da es darum geht, nach Yosemite zu suchen und ein NSVisualEffectView mit eingeschalteter Lebendigkeit einzufügen. Unter 10,8 / 10,9 dagegen ...

Ich könnte dieses Problem vollständig umgehen, indem ich die integrierte untere Balkenzeichnung von NSWindow nutze, aber die Farbzusammenführung ist optisch viel sauberer, verbindet die Steuerelemente viel stärker mit ihren übergeordneten Bereichen und scheint der Stil von zu sein Auswahl immer häufiger in diesen Tagen. Wenn es möglich ist, möchte ich es in meiner eigenen Anwendung verwenden.

    
John Wells 14.11.2014, 20:30
quelle

3 Antworten

1

Ich konnte dies erreichen, indem ich NSView abtrennte und KVO verwendete, um Farbänderungen zu beobachten, wenn sich der Schlüsselstatus des umschließenden Fensters änderte. Es funktioniert nicht am 10.10 aus den Gründen, die Sie erwähnt haben (Lebhaftigkeit), aber es funktioniert perfekt am 10.9.

Die Sourcelist Hintergrundfarben Thread auf der Apple Mailing List war was hat es für mich gelöst.

Schnittstelle:

%Vor%

Implementierung:

%Vor%

Sie müssen möglicherweise den Code in -awakeFromNib anderswo verschieben, je nachdem, wie Sie die Ansicht initialisieren.

    
Andrew 17.11.2014, 22:44
quelle
0

Ich habe die Lösung gefunden: Ich lege eine NSBox wie Sie, am unteren Rand der View auf der linken Seite der SplitView. Hier ist die Hierarchie meiner Ansichten:

Die Lösung besteht darin, die richtigen Parameter im Inspector der NSBox zu füllen:

Ich habe hier den Boxtyp auf benutzerdefiniert und die Füllfarbe auf weiß gesetzt.

Ich hoffe, diese Antwort hat dir geholfen.

    
zarghol 15.02.2015 16:21
quelle
0

Sie können einfach ein NSButton mit einem Gradient Effect hinzufügen.

Sehen Sie sich den Quellcode von Ссылка an.

Öffnen Sie die XIB für View Based Table Sie haben ein Beispiel, wie Sie es erreichen können.

    
yageek 24.01.2017 16:53
quelle