collectionView background clearColor no funciona


Estoy desarrollando una pequeña collectionview 'framework' para comportarse como una barra de pestañas del navegador (piense en chrome) en el iPad. El código está todo hecho, diseño de flujo personalizado, reordenamiento, y así sucesivamente y está organizado de la siguiente manera:

• TabBarCollectionViewController .h.m/.xib contiene la lógica alta de la vista de colección (delegados + métodos de origen de datos). Tengo el xib para configurar la configuración de collectionView y establecer el diseño de flujo personalizado (podría hacer esto programáticamente, pero bueno, es más fácil que manera).

• CustomFlowLayout .h.m (subclase de disposición del flujo)

• TabBarCell .h.m/.xib (subclase de collectionviewcell)

Entonces estoy agregando el TabBarCVC como un childViewController en mi ViewController principal (este ViewController tiene muchos childViewController y subviews) y luego como un subview. En este punto todo está funcionando fiiiiine.

Ahora el problema, es tan estúpido que no puedo creer que no haya encontrado una manera de hacer esto, el color de fondo de la vista de colección es no se puede configurar a clearColor . Puedo ponerlo en gris o de cualquier color, pero que no soporta la transparencia. El color de fondo de la celda también es claro y funciona.

Necesito que la vista de colección sea transparente para mostrar la textura en la vista principal detrás. Cualquier idea sería muy apreciada, o tal vez voy a llenar mi primer radar a Apple.

Si no puedo encontrar ninguna solución, simplemente agregaré la 'captura de pantalla' de la textura que se supone que está detrás de collectionView y la agregaré como un ImageView en el backgroundView de collectionView.

Author: nebuto, 2013-05-15

11 answers

En mi caso, tenía el color de fondo en el guion gráfico establecido por defecto. Esto hizo que tuviera un fondo negro. Cambiarlo a Color Claro funcionó.

introduzca la descripción de la imagen aquí

 54
Author: Kyle Robson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-04 06:53:02

Intente establecer el color en claro y la vista de fondo en una vista vacía como así...

self.collectionView.backgroundColor = [UIColor clearColor];
self.collectionView.backgroundView = [[UIView alloc] initWithFrame:CGRectZero];
 46
Author: Fogmeister,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-22 08:04:17

Ok así que me siento bastante estúpido ahora. Dejé un UIView vacío detrás, actuando como un contenedor para el collectionView para una prueba. Simplemente olvidé quitarlo, todo está funcionando bien con un buen clearColor ahora...

 10
Author: nebuto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-15 22:47:11

Tenga cuidado al configurar el color de fondo UICollectionViews en Storyboard:

El valor inicialmente seleccionado Por defecto es Negro (contraintuitivamente).
Debe seleccionar explícitamente Clear Color para que la vista sea transparente.

También tenga en cuenta que la vista previa en Storyboard cambia inmediatamente cuando esto se hace 'bien'...

 7
Author: DaniEll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-12 16:37:08

Lo resolví usando en Swift 3:

collectionViewVideo.backgroundColor = UIColor.clear.withAlphaComponent(0)
 1
Author: Sarfaraz Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-09 11:19:58

La respuesta de Fogmeister funcionó muy bien. Adaptado a Swift 3, sería:

self.collectionView.backgroundColors = [NSColor.clear]
self.collectionView.backgroundView = NSView.init(frame: CGRect.zero)
 1
Author: Fabian Lauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-12 06:41:40

Para tener un buen fondo blanco semitransparente use:

collectionView.backgroundColor = UIColor(displayP3Red: 1.0, green: 1.0, blue: 1.0, alpha: 0.35)
 0
Author: Maciek z Wrocławia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-23 18:38:08

En swift este trabajo conmigo:

self.collectionView.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.0)
 0
Author: mrfoxix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-27 09:18:46

¿Qué se hace para arreglarlo

Desde Storyboard set colección ver color de fondo como color claro

Luego establezca el color de la vista principal en cualquier color que desee , (yo establezco el color blanco.)

 0
Author: Logic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-17 12:34:59

La solución más fácil es simplemente elegir cualquier color en el selector de color para cambiar el fondo de collectionview y luego convertir la opacidad a 0%.

 0
Author: Dary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-22 03:43:25

Swift 4.0 de Fogmeister's respuesta

self.collectionView.backgroundColor = UIColor.clear
self.collectionView.backgroundView = UIView.init(frame: CGRect.zero)
 -1
Author: Matías Contreras Selman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-18 14:03:35