2011-11-12 23 views
6

¿Existe la posibilidad de cambiar programáticamente el color de fondo de NSCollectionView?Cambiar el color de fondo de un NSCollectionView

yo estaba tratando de subclases .. pero no funciona ..

@interface CollectionViewBg : NSCollectionView 

en .m

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

Funcionó para mí (proyecto de prueba limpio con NSCollectionView no configurado). Asegúrese de que la vista del prototipo de su vista de colección no esté opacamente llena. También asegúrese de establecer "CollectionViewBg" como la clase de vista en IB. – Regexident

+1

Además, puede usar 'arrayWithObject:' para crear una matriz de un elemento. –

+0

¿De qué método estás enviando 'setBackgroundColors:'? –

Respuesta

3

En .m, elimine esta línea:

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

Y el uso de este código:

- (void)drawRect:(NSRect)dirtyRect{ 

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

} 

Además, no olvide cambiar la clase del objeto NSCollectionView en IB a CollectionViewBg.

Espero que esto ayude :)

+0

Supongo que no desea que se extraiga ninguno de los elementos recolectados. ¿Y hay alguna razón por la cual sugieres evitar la propiedad 'backgroundColors' de NSCollectionView? –

+0

Hmm ... algo está mal con mi edición editada de CollectionView. Creé un nuevo proyecto y sí ... funciona como un encanto ... ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Gracias a todos por su ayuda !!! Voy a probar lo que he hecho mal en mi código :) –

+0

No tiene el efecto que esperaría. @Peter Hosey NSRectFill() funciona aquí. * Parece * dibujar donde los backgroundColors no. Ninguno de los enfoques proporciona un trasfondo transparente claro a la vista a continuación. – uchuugaka

0

Guess subclases no es una gran idea, porque la mayoría de los controles de cacao proporcionan diversas técnicas para evitar la subclasificación con el fin de personalizar la apariencia y el comportamiento.

En este caso particular, puede establecer la propiedad backgroundView en su NSCollectionView y proporcionar una vista personalizada que se dedique a dibujar un fondo personalizado.

Si necesita cambiar solo el color de fondo, puede considerar aprovechar el hecho de que la vista de colección por lo general se resiste a la vista de desplazamiento en el interior. Simplemente configure backgroundColor y drawsBackground propiedades de NSScrollView.

Cuestiones relacionadas