2011-11-12 29 views
6

的背景顏色是機會,通過編程修改NSCollectionView的背景顏色?改變的NSCollectionView

我在.M

[self setBackgroundColors:[NSArray arrayWithObjects:[NSColor blueColor], nil]]; 
+2

爲我工作(乾淨的測試項目,未配置NSCollectionView)。確保您的收藏視圖的原型視圖不是不完整的。還要確保在IB中將「CollectionViewBg」設置爲視圖的類。 – Regexident

+1

另外,你可以使用'arrayWithObject:'創建一個單元數組。 –

+0

你發送'setBackgroundColors:'從哪個方法? –

回答

3

試圖子類..但沒有工作..

@interface CollectionViewBg : NSCollectionView 

在.M,刪除此行:

[self setBackgroundColors:[NSArray arrayWithObjects:[NSColor blueColor], nil]]; 

,並使用此代碼:

- (void)drawRect:(NSRect)dirtyRect{ 

[[NSColor blueColor] setFill]; 
NSRectFill(dirtyRect); 

} 

也不要忘記在IB改變類NSCollectionView對象來CollectionViewBg。

希望這有助於:)

+0

我假設你不想收集任何收集到的物品?你有建議避免NSCollectionView的'backgroundColors'屬性的原因嗎? –

+0

嗯..我編輯的CollectionView出現了問題..我創建了一個新項目,並且它的功能就像一個魅力..所以感謝大家的幫助!我會去測試我在代碼中做得不好的東西:) –

+0

它沒有我期望的效果。 @Peter Hosey NSRectFill()在這裏工作。它似乎*繪製backgroundColors不在的地方。這兩種方法都不能爲下面的觀點提供清晰的透明背景。 – uchuugaka

0

猜子類是不是一個好主意,因爲大多數可可控件提供各種技術來避免以定製的外觀和行爲的子類。

在這種特殊情況下,您可以將backgroundView屬性設置爲您的NSCollectionView,並提供專用於繪製自定義背景的自定義視圖。

如果你只需要改變背景顏色,那麼你可以考慮採取的事實,即集合視圖通常滾動視圖裏面抗拒的優勢。只需設置NSScrollViewbackgroundColordrawsBackground屬性即可。