UITableView backgroundColor siempre gris en iPad
iphone-sdk-3.2 background-color (8)
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.
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:
- Crea un nuevo proyecto basado en navegación.
- Abra RootViewController.xib y establezca el estilo de vista de tabla como "Agrupado".
- Agregue este respondedor al RootViewController:
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; }
- Seleccione Simulator SDK 3.2, compilar y ejecutar.
- Obtendrás un fondo negro (dispositivo y simulador).
- Seleccione su objetivo en el árbol del proyecto.
- Haga clic en Proyecto: actualizar el objetivo actual para iPad.
- Construir y correr
- Obtendrás un fondo gris claro.
- Invierta el estilo de vista de tabla a Normal y obtendrá un fondo negro.
¡Gracias por tu ayuda!
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];
}
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
Pruebe uno de estos.
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
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];
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.
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://.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;
}
- 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.