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?
Si les deux autres options ne fonctionnent pas, essayez ceci.
UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
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
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.
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView.backgroundColor = [UIColor clearColor];
}
J'ai une solution simple
Objective-c version:
cell.backgroundColor = [UIColor clearColor];
Swift version:
cell.backgroundColor = UIColor.clearColor()
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
Si vous utilisez des storyboards, veillez à décocher "Opaque" pour votre prototype UITableViewCells
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];
}
Il y a 3 étapes: