UITableView backgroundColor siempre gris en el iPad
-
30-09-2019 - |
Pregunta
Cuando me puse la backgroundColor
para mi UITableView
funciona bien en el iPhone (y el dispositivo simulador), pero no en el simulador de iPad. En su lugar me sale un fondo gris claro para cualquier color puse incluyendo groupTableViewBackgroundColor
.
Pasos para reproducir:
- Crear un nuevo proyecto basado en la navegación.
- Abrir RootViewController.xib y establecer el estilo de vista de tabla para "agrupados".
- Añadir esta respuesta a la RootViewController:
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; }
- Seleccione Simulador SDK 3.2, generar y ejecutar.
- Usted obtendrá un fondo negro (dispositivo y simulador).
- Seleccione su destino en el árbol del proyecto.
- Haga clic en Proyecto:. Upgrade Target actual para iPad
- crear y ejecutar.
- Usted obtendrá un fondo gris claro.
- Recuperar la vista de tabla de estilo de Llano y obtendrá un fondo negro.
Gracias por su ayuda!
Solución
Pruebe uno de estos.
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
Otros consejos
Muchas gracias por esta solución. He aplicado 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 backgroundView
la propiedad parece ser utilizado para crear el color de fondo gris para las tablas agrupadas. Así que para cambiar el color de fondo para las tablas agrupadas en IPAD uno debe nil
a cabo la propiedad backgroundView
y luego configurar 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 el iPad (si desea establecer un fondo de celda también) parece que debe establecer el cuadro de fondo y fondo de la celda.
Por ejemplo, en un iPhone guión gráfico se puede establecer una célula al color claro, entonces conjunto de imágenes de fondo de la tabla mediante programación para una mesa transparente imagen de fondo. Sin embargo, si usted fuera a ver esta misma configuración en IPAD las células no estaría claro. tendrán que ser establecido para despejar mediante programación para iPad células.
intentado fijar backgroundColor y Vista de la mesa, no tuvo suerte (simulador de iPad Xcode 5 iOS7.1), bien mirado para el iPhone, pero el color de fondo gris luz en el iPad ...
trabajar con backgroundColor para la propia célula fijada por mí 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 sus objetivos de aplicaciones iPhone y iPad que pueden hacerlo de esta manera:
[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
Tenga en cuenta que el alloc TableView no tiene autorelease de ARC.
Si va a añadir un UIViewController a otro UIViewController también hay que poner el fondo de su vista a clearColor además de UITableView o de lo contrario obtendrá un fondo blanco en vez de gris claro.
if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
[myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];
- Simulación del iPad 2
- Funcionamiento iOS 7.1 a 8.3
- Construido a partir de XCode 6.3
Ninguna de las anteriores trabajado para mi UIViewController-> UITableView especificado utilizando un único XI ter. Lo que hizo el trabajo se estaba moviendo todo el montaje en un guión gráfico, y establecer el color de fondo con el inspector de IB.
También tengo este tipo de problema. El color de fondo será siempre UITableView
groupTableViewBackgroundColor
no importa lo que se propuso.
El síntoma es como este tema - UITableView está restableciendo su color de fondo antes vista aparece
Después de establecer el color de fondo en función de init
, es correcto. En viewDidLoad
y la etapa viewWillAppear
, es correcto. Sin embargo, en viewDidAppear
, el color de fondo se restablece a su color predeterminado.
La respuesta aceptada no funciona ahora.
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[UIView alloc] init]];
Aquí está mi solución. Sólo tienes que configurar el color de fondo de la tableView en función viewDidLoad
en lugar de init
o viewWillAppear
.
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.backgroundColor = [UIColor clearColor];
}