2012-06-28 9 views
6

Scroller http://f.cl.ly/items/1b1v2D2X1D092k2R1C0i/Scrollbar.pngScroller tło nieprzezroczyste w NSScrollView

Hi! Używam NSScrollView, który ma NSTableView oparty na widoku. Za każdym razem, gdy tabela dodaje komórkę tabeli, pojawiają się przewijaki, co jest w porządku, dopóki nie zobaczysz, że przewijaki nie mają przezroczystego tła. Z jakiegoś powodu tło jest białe, jak widać na obrazie.

Użyłem IB do skonfigurowania NSScrollView i NSTableView i nie mogę znaleźć żadnej opcji, w której mogę wyłączyć tło przewijacza. Jakieś pomysły, które mogą to powodować?

Update: Ustawienia dla mojego NSScrollView w Xcode

Xcode http://f.cl.ly/items/2R0k1x0T1X0A160E3l2i/Screen%20Shot%202012-06-29%20at%2002.06.32.png

Odpowiedz

2

Moja jedyna sugestia jest, aby upewnić się, że NSScrollers są domyślnego stylu, lub ustawione na klasy, która nadpisuje + (BOOL)isCompatibleWithOverlayScrollers jeśli używasz niestandardowy scroller.

W IB sprawdź, czy "Styl domyślny" jest zaznaczony w "Pokrętłach przewijania", drugi od góry.

enter image description here


OS X Lion wprowadził nowe (przewijacze nakładka) NSScrollers w przeciwieństwie do obecnych w wersji Snow Leopard, a przed SL (legacy przewijacze). Nakładki przewijające są typu, które znikają i znikają, i rysują na górze zawartości bez jaskrawego białego tła.

W niektórych scenariuszach Lion postanawia użyć starego scrollera zamiast nowych scrollerów nakładkowych (ponieważ, na przykład, jeśli urządzenie wskaźnikowe bez kółka przewijania jest podłączone, nie może dokładnie przewinąć ukrytego nakładkowego wałka)

The OS X 10.7 documentation wyjaśnia to dobrze. Podsumowując, sprawdź, czy: a) użytkownik wyłączył nałożone rolki przewijania, b) jeśli masz nieobsługiwane urządzenie podłączone, lub c) podklaskujesz NSScroller, dodajesz widoki akcesoriów lub zapominasz o nadpisaniu + (BOOL)isCompatibleWithOverlayScrollers.

Jeśli nie lubisz starszych przewijaczy wyświetlających się i chcesz obsługiwać nieobsługiwane urządzenia (np. Szary pasek przewijania narysowany nad treścią, która nie zaniknie/nie znikną), musisz podklasę NSScroller i narysować niestandardowo. Aplikacje takie jak Twitter na Maca to robią.

+0

Nie korzystam z niestandardowych przewijaczy. Używanie domyślnego stylu niczego nie zmieniło niestety.Zaktualizowałem swój post obrazem moich ustawień dla NSScrollView. Wiem, że nie zawsze tak było. – iMaddin

+0

Budujesz dla Snow Leopard czy coś w tym stylu? – Vervious

+1

Dobrze może być również upewnienie się, że a) użytkownik nie ustawił jawnie korzystania z przewijających nakładek, b) że mysz nie jest połączona, oraz c) widok przewijania nie ma widoków akcesoriów – Vervious

16

Zastąp NSScroller i wykonaj następujące czynności. To da ci przezroczyste tło.

- (void) drawRect: (NSRect) dirtyRect 
{ 
    [self drawKnob]; 
} 
+0

Wielkie dzięki. Zadziałało. :) – Sid

+0

dzięki za tonę !!! – user361526

+0

Czy możesz rozwinąć to? Widziałem kilka takich odpowiedzi. Z pewnością skopiowanie tego do mojego programu nie będzie działać bez tego, że jest on z jakiegoś powodu wywoływany? – maxisme

1

Dla mnie, moim zdaniem regulatora ustawić styl scroller takich jak:

[_scrollView setScrollerStyle:NSScrollerStyleOverlay]; 

To sprawiło, że zmieniacze mieć przezroczyste tło.

-1

Jeśli chcesz osiągnąć przejrzystość NSScrollView lub po prostu chcą jasnego tła dla widoku przewijania ... po prostu skorzystać z setDrawsBackground własności NSScrollView, tj .:

[scrollView setDrawsBackground:NO]; 

Nadzieja to pomaga kogoś. Dzięki :)

+1

Pytanie dotyczy tła NSScroller, a nie NSScrollerView. Twoja odpowiedź nie zmienia tła NSScroller. – Ely