2014-10-27 11 views
11

In OS X 10.10 Quellenlisten scheinen die Licht Brillanz Aussehen zu verwenden. Im Finder (und in einigen anderen Anwendungen von Drittanbietern, z. B. Things.app) wird das ausgewählte Element in der Quellenliste durch eine dunkle Erscheinungsform angezeigt. Sehen Sie sich beispielsweise die Desktop-Zeile im Bild unten an.Wie wird die Hervorhebung der Quellenlisten ausgewählt, um die Darstellung von Dark Vibrancy in OS X 10.10 zu verwenden?

Wie kann ich dieses Verhalten replizieren? Muss ich die Delegatmethoden verwenden, um die Tabellenzeile Ansicht angeben,

-outlineView:rowViewForItem: 

und versuchen, benutzerdefinierte selbst zeichnen oder gibt es einen eher geradlinigen Ansatz? Wenn Sie eine Standardquelle Liste UI in Xcode machen die Standard-Markierung ist das Standard-blaue Rechteck bleiben, die wir in früheren Version von OS X. gesehen haben

Source list with light vibrancy style, the selected items is darker (using a dark vibrancy style)

Antwort

1

Ich bin nicht sicher, das ist „Dark Vibrancy“ .

ich eher versuchen würde, die Hintergrundfarbe zu so etwas wie „Alternate Ausgewählte Steuerung Textfarbe“

Werfen Sie einen Blick auf ein NSTextField in Interface Einstellung. Es gibt viele "Control Text" -Farben, die in visuellen Effektansichten ein besonderes Aussehen haben.

und zur Einstellung der Auswahlfarbe diese Antwort (ungetestet) sehen: NSTableview Change the highlight colour

11

Nach etwa spielen für eine Weile fand ich einen Weg, dies zu erreichen. Es stellte sich heraus, dass ich den Stil "Finder highlight" bekommen würde, wenn ich NSTableViewSelectionHighlightStyleSourceList benutze und außerhalb meiner NSOutlineView klicke. Also dachte ich mir, dass es so bleiben würde, wenn du dich weisst, es als Ersthelfer zu machen.

einfach Ihre NSOutlineView eine Unterklasse machen und diese Methode überschreiben:

-(BOOL)acceptsFirstResponder{ 
    return NO; 
} 

Es funktioniert, aber mit ein paar Nachteile. Beispielsweise funktioniert die Verwendung von Pfeiltasten in NSOutlineView nicht mehr. Ich habe die App "Things" heruntergeladen, und die Verwendung von Pfeiltasten ist ebenfalls nicht möglich. Daher ist es sehr wahrscheinlich, dass sie dies tun. Wenn jemand einen besseren Weg findet, bitte posten Sie es.

+2

Es funktioniert, weil der Vibrations-Effekt der Standard-Effekt für ausgewählte Elemente ist in einer outlineView, die nicht zuerst antwortet. Dies ist der bevorzugte Ansatz, wenn die Pfeilnavigation besser in anderen Ansichten ausgeführt werden soll (Beispiel: Finder.app, in der die Navigation durch Dateien erwartet wird). Wenn der Benutzer jedoch erwartet, durch die Gliederungsansicht zu navigieren (z. B. die linke Leiste von Xcode), sollten Sie diesen Trick nicht verwenden. –

5

Wenn Sie möchten, dass die Pfeiltasten weiter zu arbeiten, können Sie NSTableRowView Unterklasse und die folgende Methode überschreiben:

- (BOOL)isEmphasized 
{ 
    return NO; 
} 
+0

Funktioniert gut für mich.Hinweis: Eine Unterklasse ist dafür wirklich notwendig, nur das Zuweisen einer 'NSTableRowView' und das Festlegen der' isEmphasized'-Eigenschaft auf 'NO' ist nicht sinnvoll. – hnh

3

Hier ist der Swift-Äquivalent:

func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? { 
    return CustomTableRowView(frame: NSZeroRect); 
} 

Und die Unterklasse von NSTableRowView

import Cocoa 

class CustomTableRowView: NSTableRowView { 

    override var isEmphasized: Bool { 
     set {} 
     get { 
      return false; 
     } 
    } 

} 
+0

Funktioniert für mich auf Swift 3 Xcode 8 – styl3r

+0

funktioniert! Ich habe den ganzen Tag danach gesucht ... – memis