Estoy tratando de cambiar el color de fondo de UITableViewHeaderFooterView. Aunque aparece la vista, el color de fondo sigue siendo el color predeterminado. Recibo un registro de xcode que dice:
La configuración del color de fondo en UITableViewHeaderFooterView ha quedado en desuso. Utilice contentView.backgroundColor en su lugar.
Sin embargo, ninguna de las siguientes opciones funciona:
myTableViewHeaderFooterView.contentView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundColor = [UIColor blackColor];
También intenté cambiar el color de fondo de la vista en el archivo xib.
¿Alguna sugerencia? Gracias.
                    
                        iphone
                                ios
                                xcode
                                uitableview
                                
                    
                    
                        Chun
fuente
                
                fuente

Respuestas:
Debe usar myTableViewHeaderFooterView.tintColor o asignar una vista de fondo personalizada a myTableViewHeaderFooterView.backgroundView.
fuente
tintColorno funciona en iOS7. Solo podía cambiar el color asignando una vista personalizada:myTableViewHeaderFooterView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];iOS 8, 9, 10, 11 ...
La única forma de establecer cualquier color (con cualquier alfa) es usar
backgroundView:Rápido
Obj-C
Respuestas a comentarios
Ninguna de estas otras opciones funciona de manera confiable (a pesar de los comentarios a continuación)
El
backgroundViewse redimensiona automáticamente. (No es necesario agregar restricciones)Control alfa con
UIColor(white: 0.5, alpha: 0.5)obackgroundView.alpha = 0.5.(por supuesto, cualquier color servirá)
Cuando use XIB , haga que la vista raíz ay
UITableViewHeaderFooterViewasociebackgroundViewprogramáticamente:Registrar con:
Cargar con:
↻ reproducir animación
► Encuentre esta solución en GitHub y detalles adicionales sobre Recetas Swift .
fuente
view.BackgroundView = new UIView(view.Bounds) { BackgroundColor = UIColor.Clear };Setting the background color on UITableViewHeaderFooterView has been deprecated. Please use contentView.backgroundColor instead.En iOS 7
contentView.backgroundColorfuncionó para mí,tintColorno lo hizo.Aunque
clearColorno funcionó para mí, la solución que encontré es establecer labackgroundViewpropiedad en imagen transparente. Tal vez ayude a alguien:fuente
Asegúrese de establecer el color de fondo del
contentViewpara suUITableViewHeaderFooterView:Entonces funcionará.
fuente
Para mí, probé todo lo mencionado anteriormente, pero aún recibí la advertencia "Establecer el color de fondo en UITableViewHeaderFooterView ha quedado en desuso. Utilice en su lugar contentView.backgroundColor". luego intenté esto: dentro del archivo xib, se seleccionó el color de fondo para la vista de encabezado para borrar el color en lugar del predeterminado una vez que lo cambié a predeterminado, la advertencia desapareció.
fuente
Para un color claro, yo uso
A mí me parece bien.
fuente
backgroundView = UIView()y luegobackgroundColor = .clearfue la única solución de trabajo. Gracias.Para colores de fondo sólidos, la configuración
contentView.backgroundColordebería ser suficiente:Para colores con transparencia, incluido el
.clearcolor, esto ya no funciona:Para un encabezado de sección transparente completo, establezca la
backgroundViewpropiedad en una vista vacía:Sin embargo, tenga cuidado con los posibles efectos secundarios. A menos que la vista de tabla esté configurada como "Agrupada", los encabezados de sección se ajustarán en la parte superior al desplazarse hacia abajo. Si los encabezados de sección son transparentes, se verá el contenido de la celda, lo que podría no verse bien.
Aquí, los encabezados de sección tienen fondo transparente:
Para evitar esto, es mejor establecer el fondo del encabezado de sección en un color sólido (o degradado) que coincida con el fondo de la vista de tabla o el controlador de vista.
Aquí, los encabezados de sección tienen un fondo degradado totalmente opaco:
fuente
fuente
En iOS9
headerView.backgroundView.backgroundColorfuncionó para mí:En iOS8 estaba usando
headerView.contentView.backgroundColorsin problemas, pero ahora con iOS 9, recibía un problema extraño que hacía que el color de fondo no llenara todo el espacio de la celda. Así que lo intentéheaderView.backgroundColory obtuve el mismo error del OP.Así que ahora todo funciona muy bien y sin advertencias al usar
headerView.backgroundView.backgroundColorfuente
si creó una subclase personalizada de
UITableViewHeaderFooterViewconxibarchivo, debe anularsetBackgroundColor. Mantenlo vacío.Y esto resolverá tu problema.
fuente
Si está personalizando una celda de encabezado de sección con Storyboard / Nib , asegúrese de que el color de fondo sea el predeterminado para la vista "Encabezado de sección de tabla".
Y si subclasifica
UITableViewHeaderFooterViewy usa plumín, entonces lo que tiene que hacer es crear unIBOutletpara la vista de contenido y nombrarlo, por ejemplo.containerView. Esto no debe confundirse concontentView, que es el padre de esta vista de contenedor.Con esa configuración, cambia el color de fondo de su
containerViewlugar.fuente
Lo intenté con la cadena aparienciaWhenContainedIn, y funcionó para mí.
fuente
tal vez porque el backgroundView no existe
que trabajo para mi
fuente
iOS 12, Swift 5. Si está dispuesto (o lo está intentando) a usar un proxy de apariencia, la siguiente solución funciona:
o
fuente
Olvídate de las dificultades.
Agregue a su proyecto
UITableViewHeaderFooterView+BGUpdate.swiftcon el código a continuación:El uso es simple como esperaba antes:
Ejemplos de uso :
1) En delegado
tableView:viewForHeaderInSection::o
2) En su clase de vista de encabezado personalizada:
fuente
Establecer BackgroundView con un color claro funciona bien para los encabezados visibles. Si la tabla se desplaza para mostrar encabezados en la parte inferior, esta solución falla.
Mi tabla consta solo de encabezados sin ninguna celda.
fuente
Rápido:
fuente
Cree UIView y configure el color de fondo, luego configúrelo en self.backgroundView.
fuente
Me siento obligado a compartir mi experiencia. Tenía este código que funcionaba bien con iOS 10 e iOS 11
headerView?.contentView.backgroundColor = .lightGrayEntonces, de repente, decidí implementar la aplicación para iOS 9, ya que hay algunos dispositivos (iPad mini, algunas generaciones anteriores no se actualizan a ningún sistema operativo más allá de 9): la única solución que funcionó para todos los iOS 9, 10 y 11 fue definir una vista base para el encabezado que luego contenga todas las demás subvistas de encabezado, conectarlo desde el guión gráfico y establecer el
backgroundColorde esa vista base.Deberá tener en cuenta al cablear el tomacorriente para no llamarlo:
backgroundViewya que en algunos ya hay una propiedad con ese nombresuperclass. Llamé al míocontainingViewAdemás, al cablear el control de salida, haga clic en la vista
Document Outlinepara asegurarse de que no esté conectado afile ownerfuente
fuente