reloj posicion pantalla mejorar como colores color cambiar apariencia iphone ios xcode uitableview

posicion - la pantalla de mi iphone se ve de colores



UITableViewHeaderFooterView: no se puede cambiar el color de fondo (16)

Estoy intentando cambiar el color de fondo de UITableViewHeaderFooterView. Aunque la vista está apareciendo, el color de fondo sigue siendo el color predeterminado. Obtengo un registro de xcode que dice:

Establecer el 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.


iOS 8, 9, 10, 11 ...

La única forma de establecer cualquier color (con cualquier alfa) es usar backgroundView :

Rápido

self.backgroundView = UIView(frame: self.bounds) self.backgroundView.backgroundColor = UIColor(white: 0.5, alpha: 0.5)

Obj-C

self.backgroundView = ({ UIView * view = [[UIView alloc] initWithFrame:self.bounds]; view.backgroundColor = [UIColor colorWithWhite: 0.5 alpha:0.5]; view; });

Respuestas a los Comentarios

  • Ninguna de estas otras opciones funciona de manera confiable (a pesar de los comentarios a continuación)

    // self.contentView.backgroundColor = [UIColor clearColor]; // self.backgroundColor = [UIColor clearColor]; // self.tintColor = [UIColor clearColor];

  • la vista de backgroundView se cambia de tamaño automáticamente. (No es necesario agregar restricciones)

  • Controle alfa con UIColor(white: 0.5, alpha: 0.5) o backgroundView.alpha = 0.5 .
    (por supuesto, cualquier color servirá)

  • Al usar XIB , haga que la vista raíz sea una UITableViewHeaderFooterView y asocie el backgroundView programación:

    Registrar con:

    tableView.register(UINib(nibName: "View", bundle: nil), forHeaderFooterViewReuseIdentifier: "header")

    Cargar con:

    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { if let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "header") { let backgroundView = UIView(frame: header.bounds) backgroundView.backgroundColor = UIColor(white: 0.5, alpha: 0.5) header.backgroundView = backgroundView return header } return nil }

► Encuentre esta solución en GitHub y detalles adicionales sobre Recetas Swift .


Asegúrese de establecer el backgroundColor de contentView para su UITableViewHeaderFooterView :

self.contentView.backgroundColor = [UIColor whiteColor];

Entonces funcionará.


Cree UIView y establezca el color de fondo, luego configúrelo en self.backgroundView.

- (void)setupBackgroundColor:(UIColor *) color { UIView *bgView = [[UIView alloc] initWithFrame:self.bounds]; bgView.backgroundColor = color; self.backgroundView = bgView; }


Debería usar myTableViewHeaderFooterView.tintColor, o asignar una vista de fondo personalizada a myTableViewHeaderFooterView.backgroundView.


En iOS9 headerView.backgroundView.backgroundColor funcionó para mí:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ TableViewHeader *headerView = (TableViewHeader *)[super tableView:tableView viewForHeaderInSection:section]; headerView.backgroundView.backgroundColor = [UIColor redColor]; }

En iOS8 estaba usando headerView.contentView.backgroundColor sin problemas, pero ahora con iOS 9, estaba recibiendo un problema extraño que hacía que el color de fondo no llenara todo el espacio de la celda. Así que probé solo headerView.backgroundColor y obtuve el mismo error de OP.

Establecer el color de fondo en UITableViewHeaderFooterView ha quedado en desuso. Utilice contentView.backgroundColor en su lugar.

Así que ahora todo funciona bien y sin advertencias usando headerView.backgroundView.backgroundColor


En iOS 7 contentView.backgroundColor funcionó para mí, tintColor no.

headerView.contentView.backgroundColor = [UIColor blackColor];

Aunque clearColor no funcionó para mí, la solución que encontré es establecer backgroundView propiedad backgroundView en una imagen transparente. Tal vez ayudará a alguien:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), NO, 0.0); UIImage *blank = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); headerView.backgroundView = [[UIImageView alloc] initWithImage:blank];


En mi caso, probé todo lo que se indicó anteriormente, pero seguía apareciendo la advertencia "Ha quedado obsoleto el ajuste del color de fondo en UITableViewHeaderFooterView. Utilice en su lugar contentView.backgroundColor". luego probé esto: dentro del archivo xib, el color de fondo para la vista del encabezado se seleccionó para borrar el color en lugar del predeterminado una vez que lo cambié al valor predeterminado, la advertencia desapareció.


Establecer el 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.

La tabla PSMy solo consiste en encabezados sin celdas.


Intenté con la aparición de la cadena WhenContainedIn, y funcionó para mí.

[[UIView appearanceWhenContainedIn:[UITableViewHeaderFooterView class], [UITableView class], nil] setBackgroundColor: [UIColor.grayColor]];


Me siento obligado a compartir mi experiencia. Tenía este código que funcionaba bien con iOS 10 y iOS 11 headerView?.contentView.backgroundColor = .lightGray

Luego, de repente, decidí implementar la aplicación para iOS 9, ya que hay algunos dispositivos (el iPad mini, una generación anterior no se actualiza a ningún sistema operativo más allá de 9) - La única solución que funcionó para todos los iOS 9, 10 y 11 era definir una vista base para el encabezado que luego contiene todas las otras subvistas de encabezado, conectarlo desde el guión gráfico y establecer el backgroundColor de esa vista base.

Deberá tener cuidado cuando conecte el tomacorriente para no llamarlo: vista de backgroundView ya que ya hay una propiedad con ese nombre en alguna superclass . Llamé al mío que containingView View

Además, cuando conecte el control de salida, haga clic en la vista en el Document Outline para asegurarse de que no esté conectado al file owner


Para colores de fondo sólidos, la configuración de contentView.backgroundColor debería ser suficiente:

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { if let headerView = view as? UITableViewHeaderFooterView { headerView.contentView.backgroundColor = .red // Works! } }

Para los colores con transparencia, incluido .clear color, esto ya no funciona:

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { if let headerView = view as? UITableViewHeaderFooterView { headerView.contentView.backgroundColor = .clear // Does not work 😞 } }

Para un encabezado de sección transparente completa, establezca la propiedad backgroundView en una vista vacía:

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { if let headerView = view as? UITableViewHeaderFooterView { headerView.backgroundView = UIView() // Works! } }

Sin embargo, ten cuidado con los posibles efectos secundarios. A menos que la vista de tabla esté configurada en "Agrupado", los encabezados de sección se ajustarán en la parte superior cuando se desplace hacia abajo. Si los encabezados de las secciones son transparentes, se verá el contenido de la celda, lo que podría no verse muy bien.

Aquí, los encabezados de las secciones tienen fondo transparente:

Para evitar esto, es mejor establecer el fondo del encabezado de la 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 completamente opaco:


Para un color claro, yo uso

self.contentView.backgroundColor = [UIColor clearColor]; self.backgroundView = [UIView new]; self.backgroundView.backgroundColor = [UIColor clearColor];

A mí me parece bien.


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 un IBOutlet para la vista de contenido y nombrarlo, por ejemplo. containerView . Esto no debe confundirse con contentView , que es padre de esta vista de contenedor.

Con esa configuración, cambia el color de fondo de containerView lugar.


si creaste una subclase personalizada de UITableViewHeaderFooterView con archivo xib , entonces debes anular setBackgroundColor . Manténlo vacío.

-(void)setBackgroundColor:(UIColor *)backgroundColor { }

Y esto resolverá tu problema.


tal vez porque el backgroundView no existe

override func draw(_ rect: CGRect){ // Drawing code let view = UIView() view.frame = rect self.backgroundView = view self.backgroundView?.backgroundColor = UIColor.yourColorHere }

eso funciona para mi


Rápido:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView { var headerView: TableViewHeader = super.tableView(tableView, viewForHeaderInSection: section) as! TableViewHeader headerView.backgroundView.backgroundColor = UIColor.redColor() }