web-dev-qa-db-fra.com

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

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

Une idée de comment cela pourrait être accompli?

68
levi

Si les deux autres options ne fonctionnent pas, essayez ceci.

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

Ceci est en fait répondu dans la documentation de UITableViewCell. Ainsi, bien que vous deviez configurer la transparence sur vos contrôles, la couleur d'arrière-plan de la cellule doit être définie ci-dessous.

"Remarque: Si vous souhaitez modifier la couleur d'arrière-plan d'une cellule (en définissant la couleur d'arrière-plan 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 tableView: cellForRowAtIndexPath: de la source de données. Les modifications apportées aux couleurs d'arrière-plan des cellules dans une vue de table de style groupe ont un effet différent sur les versions précédentes du système d'exploitation dans iOS 3.0. Il affecte désormais la zone située à l'intérieur du rectangle arrondi. de la zone en dehors de celui-ci ".

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

41
logancautrell

Commencez avec ces articles pour obtenir la couleur de fond correctement configurée:

http://howtomakeiphoneapps./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 une UITableViewCell. Cela devrait clarifier tous ceux qui se trouvent sur votre chemin. 

30
Corey Floyd
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

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

J'ai une solution simple  

Objective-c version:

cell.backgroundColor = [UIColor clearColor];

Swift version:

cell.backgroundColor = UIColor.clearColor()
18
Muhammad Aamir Ali

Par défaut, l'arrière-plan de votre UITableViewCell est blanc. Faire myCell.backgroundColor = [UIColor clearColor]; rendra votre UITableViewCell transparent MAIS vous ne sentirez pas la différence car le UITableView (le conteneur de votre UITableViewCell) a également un fond blanc par défaut.

Si vous voulez voir votre arrière-plan UIView, vous devez rendre votre cellule et votre arrière-plan de table transparents:

myTableView.backgroundColor = [UIColor clearColor];
myTableCell.backgroundColor = [UIColor clearColor];

Martin Magakian

10
Martin Magakian

Si vous utilisez des storyboards, veillez à décocher "Opaque" pour votre prototype UITableViewCells

2

J'ai eu un problème lorsque mon image de fond tableviewcell personnalisée était recouverte d'un fond avec une étiquette blanche.

      - (void)viewWillAppear:(BOOL)animated
    {
[super viewWillAppear:animated];
    self.tableView.backgroundColor = [UIColor clearColor]; // if this is not here, cell background image is covered with a white rectangle :S
    }

et dans le rowForCellAtIndexPath je définit l'image d'arrière-plan:

 if(!cell) {
    cell = [[[UITableViewCell alloc] initWithFrame: ...
    UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]];
    [cell setBackgroundView:cellBG];
    [cellBG release];
}
2
texmex5

Il y a 3 étapes:

  1. cell.contentView.backgroundColor = UIColor.clear
  2. Décochez la case opaque pour la cellule de vue tableau dans l'inspecteur d'attributs de la section de dessin. Vous pouvez le trouver en cliquant sur le prototype de cellule de la vue tableau dans le storyboard et en ouvrant l'inspecteur d'attributs. Faites défiler vers le bas et vous le trouverez.
  3. Sélectionnez Arrière-plan comme couleur claire dans la liste déroulante située au même endroit qu'à l'étape 2.
  4. Lancez votre application
0
Ehtesham Siddiquie