UITableView backgroundColor siempre gris en iPad

Cuando configuro backgroundColor para mi UITableView funciona bien en iPhone (dispositivo y simulador) pero NO en el simulador de iPad. En cambio, obtengo un fondo gris claro para cualquier color que establezca, incluyendo groupTableViewBackgroundColor .

Pasos para reproducir:

  1. Crea un nuevo proyecto basado en navegación.
  2. Abra RootViewController.xib y establezca el estilo de vista de tabla como “Agrupado”.
  3. Agregue este respondedor al RootViewController:
     - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; } 
  4. Seleccione Simulator SDK 3.2, comstackr y ejecutar.
  5. Obtendrás un fondo negro (dispositivo y simulador).
  6. Seleccione su objective en el árbol del proyecto.
  7. Haga clic en Proyecto: actualizar el objective actual para iPad.
  8. Construir y correr
  9. Obtendrás un fondo gris claro.
  10. Invierta el estilo de vista de tabla a Normal y obtendrá un fondo negro.

¡Gracias por tu ayuda!

Pruebe uno de estos.

 [myTableView setBackgroundView:nil]; [myTableView setBackgroundView:[[[UIView alloc] init] autorelease]]; 

Muchas gracias por esta solución. Apliqué esto en una propiedad UITableView con IBOutlet en un UIViewController y funciona bien como:

 [panelTable setBackgroundView:nil]; [panelTable setBackgroundView:[[[UIView alloc] init] autorelease]]; [panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent 

En el iPad, la propiedad backgroundView parece usarse para crear el color de fondo gris para las tablas agrupadas. Por lo tanto, para cambiar el color de fondo de las tablas agrupadas en el iPad, debe eliminarse la propiedad backgroundView y luego establecer el backgroundColor en la vista de tabla deseada.

 - (void)viewDidLoad { [super viewDidLoad]; // If you need to support iOS < 3.2, check for the availability of the // backgroundView property. if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) { self.tableView.backgroundView = nil; } self.tableView.backgroundColor = [UIColor whiteColor]; } 

Creo que vale la pena señalar que a partir de Xcode 6.1 y iOS 8.1, específicamente para iPad (si también quieres establecer el fondo de la celda), parece que debes establecer el fondo de la tabla Y el fondo de la celda.

Por ejemplo, en un guión gráfico de iPhone puede establecer una celda para borrar el color, luego establecer la imagen de fondo de la tabla de forma programática para una tabla transparente con la imagen de fondo. Sin embargo, si tuviera que ver esta misma configuración en el iPad, las celdas no estarían claras. Las celdas deberán configurarse para borrarse programáticamente para iPad.

intenté configurar backgroundColor y View para la tabla, no tuve suerte (Xcode 5 iOS7.1 iPad simulator), parecía OK para iPhone, pero el color de fondo gris claro en iPad …

trabajar con backgroundColor para la célula misma solucionó esto en iOS 7.1 4/2014

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"ViewSomeTriggerCell"; // get a cell or a recycled cell sictVCViewSomeTriggerCell *cellTrigger = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // put a picture and a word in the cell (positions set in .xib) NSString * tname = [self.fetchedTriggersArray objectAtIndex:indexPath.row]; cellTrigger.imageTrigger.image = [UIImage imageNamed:@"icon_appicon.png"]; cellTrigger.labelName.text = tname; // set background color, defeats iPad wierdness // http://stackoverflow.com/questions/2688007/uitableview-backgroundcolor-always-gray-on-ipad // clearColor is what I wanted, and it worked, also tested with purpleColor cellTrigger.backgroundColor =[UIColor clearColor]; return cellTrigger; 

}

Si su aplicación está orientada tanto para iPhone como para iPad, puede hacerlo así:

 [myTableView setBackgroundColor:[UIColor clearColor]]; // this is for iPhone if ([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone) { [myTableView setBackgroundView:nil]; [myTableView setBackgroundView:[[UIView alloc] init]]; } // this is for iPad only 

Observe que la asignación de TableView no tiene liberación automática para ARC.

Si agrega un UIViewController a otro UIViewController, también debe configurar el fondo de su vista para clearColor además de UITableView o de lo contrario obtendrá un fondo blanco en lugar de gris claro.

 if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) { [myViewController.myTableView setBackgroundView:nil]; } myViewController.myTableView.backgroundColor = [UIColor clearColor]; myViewController.view.backgroundColor = [UIColor clearColor]; 
  • Simulando el iPad 2
  • Ejecutar iOS 7.1 a 8.3
  • Construido desde XCode 6.3

Ninguno de los anteriores funcionó para mi UIViewController-> UITableView especificado con un solo XIB. Lo que sí funcionó fue mover toda la configuración a un guión gráfico y establecer el color de fondo con el inspector de IB.