2012-06-28 84 views
6

Scroller http://f.cl.ly/items/1b1v2D2X1D092k2R1C0i/Scrollbar.png滾動條背景在NSScrollView中不透明

嗨!我正在使用具有基於視圖的NSTableView的NSScrollView。每當表添加表格單元格時,滾動條都會顯示出來,直到您看到滾動條沒有透明背景爲止。出於某種原因,它的背景是白色的,因爲你可以在圖像上看到。

我用IB來設置NSScrollView和NSTableView,我找不到任何可以禁用滾動條背景的選項。任何想法可能會導致這種情況?

更新:在Xcode中設置爲我NSScrollView

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

回答

2

我唯一的建議是,以確保您的NSScrollers是默認樣式,或者設置爲,如果您使用的是重寫+ (BOOL)isCompatibleWithOverlayScrollers類自定義滾動條。

在IB中,檢查在「Scroller Knobs」下面選擇「Default Style」,位於第二位。

enter image description here


OS X Lion的對比目前在雪豹和SL(傳統的滾動條)之前的版本中引入的新NSScrollers(疊加滾動條)。覆蓋滾動條是淡入/淡出的類型,並在內容頂部繪製而沒有明顯的白色背景。

在某些情況下,Lion決定使用舊式滾動條而不是新的疊加滾動條(例如,如果指針設備沒有滾動輪插入,它不能精確滾動隱藏的疊加滾動條)

The OS X 10.7 documentation解釋得很好。總結一下,請檢查a)用戶是否禁用了覆蓋滾動條,b)是否插入了不受支持的設備,或者c)是否繼承了NSScroller,添加了附件視圖,或忘記覆蓋+ (BOOL)isCompatibleWithOverlayScrollers

如果您不喜歡顯示並希望支持不支持的設備的傳統滾動條(例如,在不會淡入/淡出的內容頂部繪製灰色滾動條),您必須繼承NSScroller的子類並自定義繪製它。像Mac的Twitter應用程序可以做到這一點。

+0

我沒有使用自定義滾動條。不幸的是使用默認樣式並沒有改變任何東西。我用我的NSScrollView設置圖像更新了我的帖子。我知道它並不總是這樣。 – iMaddin

+0

你正在爲雪豹或類似的東西建設嗎? – Vervious

+1

確保a)用戶沒有明確設置不使用疊加滾動條,b)鼠標沒有連接,以及c)滾動視圖沒有配件視圖 – Vervious

16

覆蓋NSScroller並執行以下操作。這會給你一個透明的背景。

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

非常感謝。有效。 :) – Sid

+0

謝謝! – user361526

+0

你可以擴展嗎?我已經看到了一些這樣的答案。如果沒有真正從某個地方調用它,將它複製到我的程序中是行不通的? – maxisme

1

對於我來說,在我的視圖控制器我設置了滾動式的,如:

[_scrollView setScrollerStyle:NSScrollerStyleOverlay]; 

本作的滾動條具有透明背景。

-1

如果你想實現NSScrollView透明度,或只是想爲滾動視圖清晰的背景...只是利用NSScrollView的setDrawsBackground財產的,即:

[scrollView setDrawsBackground:NO]; 

希望這可以幫助別人。謝謝:)

+1

問題是關於NSScroller的背景,而不是NSScrollerView的背景。你的答案不會改變NSScroller的背景。 – Ely