Suppression des bordures de cellule d’une section de style UITableView groupé

J’ai un UITableViewController initialisé avec le style groupé et ayant plusieurs sections. Pour l’une de ces sections, j’aimerais que ses cellules constitutives soient complètement transparentes et sans bordure. Je prévois d’affecter une vue personnalisée à chaque ligne de cette section, mais le fait que cette vue personnalisée soit entourée par la cellule de la table groupée semble incorrect 🙁

Ce qui suit rend la couleur d’arrière-plan d’une cellule noire au lieu de transparente … Et je ne sais toujours pas comment se débarrasser de la bordure.

cell.backgroundColor = [UIColor clearColor]; 

Des pointeurs? Merci!

REMARQUE: Cela ne semble pas fonctionner dans iOS7 et les versions ultérieures. Pour iOS7, essayez cette réponse.

Pour iOS6 et les versions inférieures, pour supprimer l’arrière-plan groupé d’une cellule dans une cellule de vue de table groupée:

Cela n’a pas fonctionné

 cell.backgroundView = nil; // Did Not Work 

Cela a fait

 cell.backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; 

Si vous avez migré vers ARC (j’ai entendu cela fonctionne, mais je ne l’ai pas testé)

 cell.backgroundView = [UIView new]; 

Vous devez réellement définir

 tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 

pour enlever la bordure des cellules.

Le hack suivant fonctionne dans iOS 7 – pour le moment. 🙂

La sous-classe UITableViewCell , et utilisez cette cellule pour la section qui ne doit pas comporter de séparateurs.
Remplacez la méthode addSubview dans votre sous-classe de cellules:

 -(void)addSubview:(UIView *)view { // The separator has a height of 0.5pt on a retina display and 1pt on non-retina. // Prevent subviews with this height from being added. if (CGRectGetHeight(view.frame)*[UIScreen mainScreen].scale == 1) { return; } [super addSubview:view]; } 

C’est ce qui a fonctionné avec avoir une table de style groupé

[tableView setSeparatorColor: [UIColor clearColor]];

Ce code a fonctionné pour moi 🙂

 [self.tableView setSeparatorColor:[UIColor clearColor]]; [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; 

Définissez la valeur backgroundView de la cellule sur nil. Pour une table groupée, l’image de la cellule fait partie de cette vue.

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

Essayez d’utiliser tableView.separatorColor = [UIColor clearColor];

Et, n’utilisez pas tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

J’ai testé avec les deux, si style n’est aucun, rendre les bordures de section invisibles ne fonctionne pas, mais simplement changer sa couleur, et la bordure de la section semblera être nulle.

iOS semble faire la différence en faisant un object none et en rendant un object transparent

 cell.backgroundView = [UIView new]; 

Fonctionne comme un charme! Testé! iOS6

A partir d’iOS 8, la définition de l’atsortingbut séparateur sur none fonctionne également.

Se débarrasser de la frontière cellulaire

La définition d’une vue de contenu supprime également la bordure. Définissez votre vue personnalisée sur cell.contentView.

Le moyen le plus simple de supprimer les bordures de cellules d’une section de style UITableView groupé:

 [tableViewOutlet setBackgroundView:nil]; 

dans la méthode viewDidLoad.

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

Si vous avez un UITableCellView personnalisé, vous pouvez append la méthode suivante à votre vue pour supprimer la vue en arrière-plan.

 - (void)setBackgroundView:(UIView *)backgroundView { // We don't want background views for this cell. [super setBackgroundView:nil]; } 

Je pensais juste que je convertirais mon commentaire en @Intentss en une réponse, car cela pourrait être utile pour ceux qui utilisent sa solution.

Utiliser iOS6.1 avec un groupe UITabelView groupé, en utilisant ARC:

[tableView setSeparatorColor: [UIColor clearColor]];

Ne marche pas

cell.backgroundView = [[UIView alloc] initWithFrame: CGRectZero];

Fonctionne