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:

  1. Crear un nuevo proyecto basado en la navegación.
  2. Abrir RootViewController.xib y establecer el estilo de vista de tabla para "agrupados".
  3. Añadir esta respuesta a la RootViewController:
    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    }
  4. Seleccione Simulador SDK 3.2, generar y ejecutar.
  5. Usted obtendrá un fondo negro (dispositivo y simulador).
  6. Seleccione su destino en el árbol del proyecto.
  7. Haga clic en Proyecto:. Upgrade Target actual para iPad
  8. crear y ejecutar.
  9. Usted obtendrá un fondo gris claro.
  10. Recuperar la vista de tabla de estilo de Llano y obtendrá un fondo negro.

Gracias por su ayuda!

¿Fue útil?

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];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top