2014-10-27 24 views
11

Na listach źródłowych OS X 10.10 wydaje się, że używają one jaskrawego wyglądu światła. W Finderze (oraz w niektórych aplikacjach innych firm, na przykład Things.app) wybrany element na liście źródłowej jest oznaczany jako ciemny, o jaskrawym wyglądzie. Na przykład zobacz wiersz Komputer na poniższym obrazku.Jak uzyskać zaznaczenie wyboru listy źródeł, aby użyć wyglądu Dark Vibrancy w systemie OS X 10.10?

Jak mogę zreplikować to zachowanie? Czy muszę używać metod delegowania do określania widoku wiersza tabeli, a następnie samemu próbować rysowania niestandardowego lub czy istnieje bardziej proste podejście? Jeśli się standardową listę źródło UI w Xcode domyślne podświetlanie jest nadal standardowy niebieski prostokąt, który widzieliśmy w poprzedniej wersji OS X.

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

Odpowiedz

1

nie jestem pewien, to jest „Mroczny Vibrancy” .

wolałbym spróbować ustawić kolor tła do czegoś podobnego „alternate wybranej kontrolki Text Color”

Wystarczy popatrzeć na NSTextField w InterfaceBuilder. istnieje wiele kolorów "Control Text", które mają specjalny wygląd w efektach wizualnych.

i ustawiania koloru wybór zobaczyć tę odpowiedź (niesprawdzone): NSTableview Change the highlight colour

11

Po zabawy na chwilę znalazłem drogę do osiągnięcia tego celu. Okazało się, że otrzymam styl "wyróżnienia Findera" podczas korzystania z NSTableViewSelectionHighlightStyleSourceList i klikania poza moim widokiem NSOutlineView. Pomyślałem więc, że tak pozostanie, jeśli nie zgodzisz się na pierwszą odpowiedź.

Wystarczy dokonać NSOutlineView podklasą i zastąpić tę metodę:

-(BOOL)acceptsFirstResponder{ 
    return NO; 
} 

to działa, ale z pewnymi downsides. Na przykład użycie klawiszy strzałek w widoku NSOutlineView przestanie działać. Pobrałem aplikację Things i nie można używać klawiszy strzałek, więc jest bardzo prawdopodobne, że tak to robią. Jeśli ktoś znajdzie lepszy sposób, opublikuj go.

+2

Działa, ponieważ efekt wibracji jest domyślnym efektem dla wybranych elementów w outlineView, który nie jest pierwszym ratownikiem. Jest to preferowane podejście, jeśli nawigacja ze strzałkami jest lepsza w innych widokach (np. Finder.app, w którym oczekiwana jest nawigacja po plikach). Jeśli jednak użytkownik chce nawigować w widoku konspektu (np. Lewy pasek Xcode), nie powinien używać tej sztuczki. –

5

Jeśli chcesz zachować klawisze strzałek działa, można podklasy NSTableRowView i zastąpić następujące metody:

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

Działa dobrze dla mnie.Uwaga: podklasa jest w tym przypadku naprawdę niezbędna, wystarczy przydzielić 'NSTableRowView' i ustawienie właściwości' isEmphasized' na 'NO' nie daje rady. – hnh

3

Oto Swift równoważne:

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

A podklasa NSTableRowView

import Cocoa 

class CustomTableRowView: NSTableRowView { 

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

} 
+0

Działa dla mnie na Swift 3 Xcode 8 – styl3r

+0

działa! Szukałem tego przez cały dzień ... – memis