ios objective-c ipad uitableview uibackgroundcolor

ios - UITableView backgroundColor siempre blanco en iPad



objective-c uibackgroundcolor (16)

Swift 3.1

He UITableViewCell este error colocando esto en mi subclase UITableViewCell :

Cuando la celda se carga desde el archivo NIB:

UITableViewCell.appearance().backgroundColor = UIColor.clear

y cuando el sistema reutiliza la celda

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool

Se supone que iOS 10 soluciona este problema en Interface Builder, como dijo animeshporwal .

Estoy trabajando en un proyecto Tengo muchos UITableView s configurados como color claro. El color de fondo de sus vistas está configurado para mi color personalizado y todo está bien en iPhone .

¡El problema surge en iPad ! Intenté casi todo, pero mi UITableView tiene un color blanco.

Revisé los otros temas, como: UITableView backgroundColor siempre gris en iPad , pero nada funcionó. Además, mi problema no es gris, ¡es blanco como la nieve!

¿Cuál podría ser la razón de esto?


Acabo de tener este problema y lo solucioné cambiando el color de fondo de la vista (en oposición al de tableView). Parece en iPad, ese es el que se usa primero y en mi caso se configuró en blanco.


En lugar de establecer el color de fondo, intente usar una vista de fondo, como esta:

- (void)viewDidLoad { self.tableView.backgroundView = [UIView new]; self.tableView.backgroundView.backgroundColor = [UIColor clearColor]; }

He tenido problemas en los que usar backgroundColor no siempre produce un efecto, pero configurar una vista de fondo funciona bien.


En mi experiencia, algunas versiones de iOS establecen el backgroundColor de UITableViewCell antes de llamar a tableView:willDisplayCell:forRowAtIndexPath: del delegado tableView:willDisplayCell:forRowAtIndexPath: Restablecer de nuevo a su color personalizado en ese método lo arregla.


Esto parece solucionarse con iOS 10 Beta 4 como se menciona en las notas de la versión en las notas de UIKit :


Esto resuelve este problema para mí

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { tableView.backgroundColor = UIColor.clear }


Esto se puede lograr en un Storyboard de la siguiente manera:

  • Muestra el esquema del documento para tu guión gráfico
  • Dentro de su mesa, elija un TableViewCell
  • ir a la vista de contenido dentro de esa celda
  • Establezca el color de fondo de la vista de Contenido.

Resultado: las vistas del simulador de iPad y iPhone son iguales


Estoy usando Storyboard con UITableViewControlrs , por lo que la decisión más simple fue subclasificar todos los controladores y agregar este método a los padres

override func awakeFromNib() { super.awakeFromNib() self.backgroundColor = UIColor.clear }


Partiendo de la respuesta de Ben Flynn ... el color de fondo de cell.contentView no es necesariamente igual al color de fondo de cell.content. En ese caso, descubrí que esto funcionó para resolver el problema de fondo blanco del iPad en más situaciones:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ... cell.backgroundColor = cell.backgroundColor; return cell; }

Si bien la declaración parece ridícula y loca ... resuelve el problema.


Puede solucionar esto haciendo una configuración de API de apariencia en su archivo appDelegate:

Rápido:

UITableViewCell.appearance().backgroundColor = UIColor.clearColor()


Tengo una vista de tabla con muchas celdas diferentes en el interior, cada una tiene un color diferente.

La respuesta de @Ben Flynn cell.backgroundColor = self.contentView.backgroundColor no puede lograr eso. La razón es self.contentView.backgroundColor es nil, por lo que lo que hizo fue borrar el cell.backgroundColor = nil .

Básicamente es el error de Xcode (creo, ¡sí, apesta!), cell.backgroundColor todavía tiene color, pero no se puede mostrar.

Después de depurar por un tiempo, según la respuesta de @Ray W, aquí está mi solución.

@impelement YouCustomCellClass - (void)awakeFromNib { [super awakeFromNib]; self.backgroundColor = self.backgroundColor; // What the heck?? But it is. } @end


Tengo una vista de tabla transparente con celdas de vista de tabla semitransparente. Establezco el color de fondo de la vista de tabla para borrar cuando creo la tabla. Esto funciona para todas las combinaciones de iOS / dispositivo, excepto iPad + iOS 8, donde el color de fondo sigue siendo blanco.

Para mí, establecer el color de fondo de la celda en semitransparente y el color de fondo de la vista de contenido para borrar los trabajos, ya que lo hago en cada tableView(_ tableView: UITableView, cellForRowAt indexPath) . El problema para mí fue solo que el fondo de la vista de la tabla permaneció blanco.

Intenté todas las combinaciones que encontré con respecto a este problema, pero lo único que realmente necesitaba era establecer el fondo de las vistas de tabla en transparente en cada tableView(_ tableView: UITableView, cellForRowAt indexPath) . No es súper intuitivo, pero al menos funciona. :PAGS


Buenas noticias: según las notas de la versión, para iOS 10:

Cuando se ejecuta en iPad, ahora se respeta el color de fondo establecido para UITableViewCell en un Storyboard.

Para versiones <10:

Estaba viendo esto en iOS 8 (8.3). Aunque en IB mis celdas eran de "color claro" y sus vistas de contenido eran de "color claro", se mostraban en blanco. Una solución imperfecta pero razonable, ya que todavía toma valores de IB:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ... cell.backgroundColor = cell.contentView.backgroundColor; return cell; }

Parece que mis celdas reutilizables retiradas tienen su fondo forzado a blanco en iPad. Pude determinar esto usando el depurador de jerarquía de vistas.

Una vez que hice esto pude usar el color de fondo de la tabla y no tuve que establecer una vista de fondo, aunque eso también funciona.


RÁPIDO

Esto también me sucedió a mí. Mi vista de tabla en mi SWRevealViewController apareció en blanco en mi iPad cuando se veía clara (que es lo que quería con una imagen de fondo) en mi iPhone. Intenté todo lo anterior, pero esto es lo que terminó funcionando para mí en mi viewDidLoad ().

override func prepareForReuse() { super.prepareForReuse() self.backgroundColor = UIColor.clear }


SWIFT También tuve este problema. Funciona bien en .phone pero tableViewCells se vuelve blanco en .pad. Pensé en mostrar cómo lo solucioné usando swift.

Conecte The tableViewCell al viewController.swift como un @IBOutlet así:

@IBOutlet weak var tvc1: UITableViewCell! @IBOutlet weak var tvc2: UITableViewCell! @IBOutlet weak var tvc3: UITableViewCell!

Luego, en viewDidLoad, ponga lo siguiente:

tvc1.backgroundColor = tvc1.backgroundColor tvc2.backgroundColor = tvc2.backgroundColor tvc3.backgroundColor = tvc3.backgroundColor

Muy extraño, no sé qué está sucediendo aquí, pero esto me resolvió.


SWIFT 3.XX

Pon esto

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ cell.backgroundColor = [UIColor clearColor]; } }

En AppDelegate

tableView.backgroundView = UIImageView(image: UIImage(named: "gray")) tableView.backgroundView?.backgroundColor = .clearColor() UITableViewCell.appearance().backgroundColor = .clearColor()