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
tintColor
no 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
backgroundView
se 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
UITableViewHeaderFooterView
asociebackgroundView
programá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.backgroundColor
funcionó para mí,tintColor
no lo hizo.Aunque
clearColor
no funcionó para mí, la solución que encontré es establecer labackgroundView
propiedad en imagen transparente. Tal vez ayude a alguien:fuente
Asegúrese de establecer el color de fondo del
contentView
para 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 = .clear
fue la única solución de trabajo. Gracias.Para colores de fondo sólidos, la configuración
contentView.backgroundColor
debería ser suficiente:Para colores con transparencia, incluido el
.clear
color, esto ya no funciona:Para un encabezado de sección transparente completo, establezca la
backgroundView
propiedad 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
En el creador de interfaces, levante su .xib, en el elemento superior, en el inspector de atributos, configure el color de fondo como predeterminado. Luego vaya a la Vista de contenido y configure el color de fondo allí (consulte https://github.com/jiecao-fm/SwiftTheme/issues/24 ).
fuente
En iOS9
headerView.backgroundView.backgroundColor
funcionó para mí:En iOS8 estaba usando
headerView.contentView.backgroundColor
sin 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.backgroundColor
y obtuve el mismo error del OP.Así que ahora todo funciona muy bien y sin advertencias al usar
headerView.backgroundView.backgroundColor
fuente
si creó una subclase personalizada de
UITableViewHeaderFooterView
conxib
archivo, 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
UITableViewHeaderFooterView
y usa plumín, entonces lo que tiene que hacer es crear unIBOutlet
para 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
containerView
lugar.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.swift
con 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 = .lightGray
Entonces, 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
backgroundColor
de esa vista base.Deberá tener en cuenta al cablear el tomacorriente para no llamarlo:
backgroundView
ya que en algunos ya hay una propiedad con ese nombresuperclass
. Llamé al míocontainingView
Además, al cablear el control de salida, haga clic en la vista
Document Outline
para asegurarse de que no esté conectado afile owner
fuente
fuente