Question

Quand je mets le backgroundColor pour mon UITableView il fonctionne bien sur iPhone (appareil et simulateur), mais pas sur le simulateur iPad. Au lieu de cela, je reçois un fond gris clair pour toutes les couleurs que je mets y compris groupTableViewBackgroundColor.

Étapes pour reproduire:

  1. Créer un nouveau projet basé navigation.
  2. Ouvrir RootViewController.xib et définir le style de vue table "Groupé".
  3. Ajouter ce répondeur à RootViewController:
    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    }
  4. Sélectionnez SDK Simulator 3.2, créer 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 le projet:. Mise à niveau cible actuelle pour iPad
  8. Générer et exécuter.
  9. Vous obtiendrez un fond gris clair.
  10. Revert la vue de table style ordinaire et vous obtiendrez un fond noir.

Merci pour votre aide!

Était-ce utile?

La solution

Essayez l'un de ces derniers.

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

Autres conseils

Merci beaucoup pour cette solution. J'ai appliqué ceci sur une propriété UITableView avec IBOutlet dans un UIViewController et il 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é pour créer la couleur de fond gris pour les tables groupées. Donc, pour changer la couleur d'arrière-plan pour les tables groupées sur iPad on devrait nil la propriété backgroundView puis définissez la backgroundColor sur l'affichage du tableau souhaité.

- (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 que de Xcode 6.1 et iOS 8.1, spécialement pour iPad (si vous voulez fond de la cellule ensemble aussi bien), il semble que vous devez définir fond de table et fond de la cellule.

Par exemple, sur un iPhone story-board vous pouvez définir une cellule à la couleur claire, puis réglez l'image d'arrière-plan de la table pour une table programmation transparente avec l'image d'arrière-plan. Toutefois, si vous deviez voir ce même configuration sur iPad les cellules ne seraient pas claires. Les cellules devront être mis à effacer pour iPad par programmation.

essayé de placer backgroundColor et Vue sur la table, pas eu de chance (Xcode 5 iOS7.1 simulateur iPad), avaient l'air bien pour l'iPhone, mais la couleur de fond gris clair sur iPad ...

travailler avec backgroundColor pour la cellule elle-même fixée pour moi sur 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 vos cibles d'applications 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 le alloc TableView ne pas autorelease pour ARC.

Si vous ajoutez un UIViewController à un autre UIViewController vous devez également définir votre point de vue de l'arrière-plan clearColor en plus de UITableView ou bien vous obtiendrez un fond 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 iPad 2
  • Running iOS 7.1 à 8.3
  • Construit à partir XCode 6.3

Aucune de ces travaillé pour mon UIViewController-> UITableView spécifié en utilisant un seul XIB au catalogue. Qu'est-ce que le travail se déplaçait l'ensemble de l'installation dans un storyboard, et définir la couleur d'arrière-plan à l'aide de l'inspecteur IB.

J'ai aussi eu ce genre de problème. La couleur de fond de UITableView sera toujours groupTableViewBackgroundColor peu importe ce que je mets.

Le symptôme est comme cette question - UITableView est remise à zéro son couleur de fond avant vue apparaît

Après avoir mis la couleur d'arrière-plan en fonction init, il est correct. Dans viewDidLoad et le stade de viewWillAppear, il est correct. Cependant, dans viewDidAppear, la couleur de fond est remis à sa couleur par défaut.

La réponse acceptée ne fonctionne pas maintenant.

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

Voici ma solution. Il suffit de régler la couleur de fond de tableView en fonction viewDidLoad plutôt que init ou viewWillAppear.

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.backgroundColor = [UIColor clearColor];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top