UITableView backgroundColor toujours gris sur iPad

Lorsque je règle backgroundColor pour mon UITableView cela fonctionne bien sur iPhone (périphérique et simulateur), mais PAS sur le simulateur iPad. Au lieu de cela, j’obtiens un arrière-plan gris clair pour toutes les couleurs définies, y compris groupTableViewBackgroundColor .

Étapes pour reproduire:

  1. Créez un nouveau projet basé sur la navigation.
  2. Ouvrez RootViewController.xib et définissez le style de vue de la table sur “Grouped”.
  3. Ajoutez ce répondeur à RootViewController:
     - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; } 
  4. Sélectionnez Simulator SDK 3.2, comstackr et exécuter.
  5. Vous obtiendrez un fond noir (appareil et simulateur).
  6. Sélectionnez votre cible dans l’arborescence du projet.
  7. Cliquez sur Projet: Mettre à niveau la cible actuelle pour iPad.
  8. Construire et exécuter
  9. Vous obtiendrez un fond gris clair.
  10. Rétablissez le style d’affichage de la table en Plain et vous obtiendrez un arrière-plan noir.

Merci de votre aide!

Essayez l’un d’entre eux.

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

Merci beaucoup pour cette solution. Je l’ai appliqué sur une propriété UITableView avec IBOutlet dans un UIViewController et cela fonctionne bien comme:

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

Sur iPad, la propriété backgroundView semble être utilisée pour créer la couleur de fond grise pour les tables groupées. Donc, pour modifier la couleur d’arrière-plan des tables groupées sur un iPad, vous nil éliminer la propriété backgroundView , puis définir backgroundColor sur la vue de table souhaitée.

 - (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]; } 

Je pense qu’il est intéressant de noter qu’à partir de Xcode 6.1 et iOS 8.1, spécifiquement pour iPad (si vous souhaitez également définir l’arrière-plan de la cellule), il semble que vous devez définir l’arrière-plan du tableau ET le fond de la cellule.

Par exemple, sur un storyboard iPhone, vous pouvez définir une cellule pour effacer la couleur, puis définir une image d’arrière-plan du tableau par programme pour un tableau transparent avec une image d’arrière-plan. Cependant, si vous deviez afficher cette même configuration sur iPad, les cellules ne seraient pas claires. Les cellules doivent être définies pour être effacées par programme pour iPad.

essayé de définir backgroundColor et View pour la table, n’a pas eu de chance (simulateur iPad Xcode 5 iOS7.1), regardé OK pour iPhone, mais la couleur de fond gris clair sur iPad …

travailler avec backgroundColor pour la cellule elle-même a corrigé cela pour moi sur iOS 7.1 4/2014

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSSsortingng *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) NSSsortingng * 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 votre application cible à la fois iPhone et iPad, vous pouvez le faire comme ceci:

 [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 

Notez que l’allocation de TableView n’a pas d’autorelease pour ARC.

Si vous ajoutez un UIViewController à un autre UIViewController, vous devez également définir l’arrière-plan de votre vue sur clearColor en plus de UITableView. Sinon, vous obtiendrez un arrière-plan blanc au lieu de gris clair.

 if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) { [myViewController.myTableView setBackgroundView:nil]; } myViewController.myTableView.backgroundColor = [UIColor clearColor]; myViewController.view.backgroundColor = [UIColor clearColor]; 
  • Simuler l’iPad 2
  • Exécution d’iOS 7.1 à 8.3
  • Construit à partir de XCode 6.3

Aucun des éléments ci-dessus n’a fonctionné pour mon UIViewController-> UITableView spécifié en utilisant un seul XIB. Ce qui a fonctionné était de déplacer la configuration entière dans un Storyboard et de définir la couleur de fond à l’aide de l’inspecteur IB.