186 votes

UITableViewCell affiche un fond blanc et ne peut être modifié sous iOS7

J'ai mis en place une classe de cellule de vue de tableau personnalisée qui hérite de UITableViewCell . Le tableau contient une image d'arrière-plan, je veux donc que l'arrière-plan des cellules soit transparent. C'est très bien avant iOS7.

Toutefois, dans iOS7, la cellule est toujours affichée avec un fond blanc.

384voto

Kjuly Points 15089

Comme le dit Apple DOC (UITableViewCell Class Reference) :

... Dans iOS 7, les cellules ont un fond blanc par défaut. Dans les versions antérieures d'iOS, les cellules héritent de la couleur d'arrière-plan de la vue du tableau qui les entoure. Si vous souhaitez modifier la couleur d'arrière-plan d'une cellule, faites-le dans la section tableView:willDisplayCell:forRowAtIndexPath : de votre délégué de la vue de la table.

Ainsi, dans mon cas, pour afficher les cellules avec un arrière-plan transparent, il suffit d'implémenter la méthode du délégué dans le contrôleur de la vue tableau comme ci-dessous :

- (void)tableView:(UITableView *)tableView
  willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
  [cell setBackgroundColor:[UIColor clearColor]];
}

Remarque : Comme l'a dit @null, "...il semble y avoir un bug dans le constructeur d'interface..." Je ne suis pas totalement sûr qu'il y ait un bug, mais il semble que ce soit le cas car son commentaire a reçu plusieurs votes positifs. Il y a donc peut-être un problème si vous utilisez IB :)

66voto

Anton Filimonov Points 375

J'ai fait quelques recherches et j'ai découvert que la couleur d'arrière-plan de la cellule est définie par le système d'apparence. Donc, si toutes les cellules de votre application ont un arrière-plan clair, la solution la plus simple est la suivante :

[[UITableViewCell appearance] setBackgroundColor:[UIColor clearColor]];

Et même s'ils ont des arrière-plans différents, la couleur claire semble être la plus pratique comme couleur par défaut.

30voto

sanjana Points 417

Écrivez ceci dans votre méthode cellForRowAtIndexPath avant de retourner la cellule ;

cell.backgroundColor = [UIColor clearColor];

13voto

Yiming Tang Points 259

La couleur d'arrière-plan par défaut d'un UITableViewCell dans iOS 7 est blanc.

Vous devez définir le backgroundColor quelque part dans votre code. Par exemple, définissez-la après avoir créé la cellule.

cell.backgroundColor = [UIColor clearColor];

13voto

Endama Points 384

En fait, j'ai découvert que le problème provenait du fait que la couleur d'arrière-plan de l'UITableView n'était pas définie comme étant claire. Si vous changez la couleur d'arrière-plan de UITableViewCell pour clear et que vous constatez que vous voyez toujours du blanc, assurez-vous que la couleur d'arrière-plan de UITableView est définie pour clear (ou ce que vous voulez).

[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X