NSCollectionViewの背景色を変更する

NSCollectionViewの背景色をプログラム的に変更する機会ですか?

私はサブクラス化しようとしていた..しかし、動作していない..

 @interface CollectionViewBg : NSCollectionView

in .m

 [self setBackgroundColors:[NSArray arrayWithObjects:[NSColor blueColor], nil]];
6
また、 arrayWithObject:を使用して1要素配列を作成することもできます。
追加された 著者 Peter Hosey,
setBackgroundColors:を送信する方法は?
追加された 著者 Peter Hosey,
私のために働いた(構成されていないNSCollectionViewのクリーンテストプロジェクト)。コレクションビューのプロトタイプビューが不透明になっていないことを確認してください。また、実際にIBのビューのクラスとして「CollectionViewBg」を設定していることを確認してください。
追加された 著者 Regexident,

2 答え

.mでは、次の行を削除します。

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

このコードを使用してください:

- (void)drawRect:(NSRect)dirtyRect{

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

}

IBのNSCollectionViewオブジェクトのクラスをCollectionViewBgに変更することも忘れないでください。

お役に立てれば :)

3
追加された
それは私が期待する効果はありません。 @Peter Hosey NSRectFill()はここで動作します。 backgroundColorsのどこに描画されないのかは思われそうです。いずれの方法も、以下のビューに対して透明な背景を与えません。
追加された 著者 uchuugaka,
私はあなたが集められたアイテムのどれも描かれたくないと思う? NSCollectionViewの backgroundColors プロパティを避けることをお勧めする理由はありますか?
追加された 著者 Peter Hosey,
うーん..私の編集したCollectionViewで何かが間違っている..私は新しいプロジェクトを作成し、はい。それは魅力のように動作します..私は自分のコードで悪いことをしたことをテストします:)
追加された 著者 Justin Boo,

ほとんどのCocoaコントロールは外観と動作をカスタマイズするためにサブクラス化を避けるためのさまざまなテクニックを提供するので、推測サブクラス化は素晴らしい考えではありません。

この特定のケースでは、 NSCollectionViewbackgroundView プロパティを設定し、カスタム背景を描画するためのカスタムビューを提供できます。

背景色のみを変更する必要がある場合、コレクションビューは通常、スクロールビューの内側に耐えられるという利点を活用することができます。 NSScrollViewbackgroundColordrawsBackground プロパティを設定するだけです。

0
追加された