75 votes

Comment créer une UITableViewCell avec un arrière-plan transparent

Je tente de définir la couleur de fond d'une UITableViewCell en transparent. Mais rien ne semble fonctionner. J'ai des images/boutons à l'intérieur de la tableViewCell et je voudrais faire disparaître l'arrière-plan blanc du grouptableview pour obtenir un effet 'flottant' pour les images et les boutons (comme s'ils n'étaient pas à l'intérieur de la tableview).

Des idées sur la manière dont cela pourrait être accompli ?

123voto

Ron Srebro Points 4687

Si aucune des autres options n'a fonctionné, essayez ceci

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;

14 votes

MyTable.backgroundColor = [UIColor clearColor]; a fonctionné pour moi! Merci

7 votes

Cela a fonctionné pour moi aussi, bien que j'aie dû utiliser en plus : cell.backgroundColor = [UIColor clearColor];

4 votes

J'ai également dû utiliser cell.textLabel.backgroundColor=[UIColor clearColor] !

45voto

logancautrell Points 7508

Cela est en fait répondu dans la documentation de UITableViewCell. Donc, bien que vous deviez configurer la transparence sur vos contrôles, la couleur de fond de la cellule en elle-même doit être définie comme ci-dessous.

"Remarque : Si vous souhaitez modifier la couleur de fond d'une cellule (en définissant la couleur de fond d'une cellule via la propriété backgroundColor déclarée par UIView), vous devez le faire dans la méthode tableView:willDisplayCell:forRowAtIndexPath: du délégué et non dans tableView:cellForRowAtIndexPath: de la source de données. Les modifications de la couleur de fond des cellules dans une table de style groupe ont un effet dans iOS 3.0 qui est différent des versions précédentes du système d'exploitation. Cela affecte désormais la zone à l'intérieur du rectangle arrondi au lieu de la zone à l'extérieur de celui-ci."

https://developer.apple.com/documentation/uikit/uitableviewcell

1 votes

Vous avez sauvé ma vie. C'est la seule solution qui fonctionne vraiment.

1 votes

Si il y avait un Academy Award pour les codeurs, vous seriez en train de tenir un Oscar maintenant!

31voto

Corey Floyd Points 16747

Commencez avec ces articles pour configurer correctement la couleur de fond :

http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/

http://pessoal.org/blog/2009/02/25/customizing-the-background-border-colors-of-a-uitableview/

Ensuite, essayez toutes les lignes suivantes :

[[cell contentView] setBackgroundColor:[UIColor clearColor]];
[[cell backgroundView] setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundColor:[UIColor clearColor]];

Il y a plus d'une vue cachée dans un UITableViewCell. Cela devrait rendre toutes celles sur votre passage transparentes.

0 votes

Fonctionne parfaitement... sauf une faute de frappe : setBbackgroundColor =>setBackgroundColor

1 votes

Cell.contentView's couleur de fond semblait être la vraie clé pour moi. (Confirmé uniquement sur iOS7)

0 votes

Vous êtes incroyable. +100 si je pouvais

27voto

iomar Points 197
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView.backgroundColor = [UIColor clearColor];
}

1 votes

Si votre vue de table a une couleur de fond et que vous voulez que votre cellule soit transparente pour pouvoir voir la couleur de fond de votre vue de table, c'est la bonne solution.

0 votes

Comment cela n'est-il PAS la SEULE réponse. Fonctionne comme un charme.

20voto

MuhammadAamirALi Points 2555

J'ai une solution simple

Version Objective-C:

cell.backgroundColor = [UIColor clearColor];

Version Swift:

cell.backgroundColor = UIColor.clearColor()

1 votes

Mais toujours le définir dans - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

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