web-dev-qa-db-fra.com

Suppression des bordures de cellules d'une section de UITableView de style 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 constituantes soient complètement transparentes et sans frontière. Je prévois d’affecter une vue personnalisée à chaque ligne de cette section, mais l’affichage de cette vue personnalisée entourée par la cellule du tableau groupé a une mauvaise apparence :( 

Ce qui suit rend la couleur de fond d'une cellule noire au lieu de transparente ... Et je ne sais toujours pas comment me débarrasser de la bordure.

cell.backgroundColor = [UIColor clearColor];

Des pointeurs? Merci!

64
Tim

NOTE: Cela ne semble pas fonctionner dans iOS7 et supérieur. Pour iOS7, essayez this answer.

Pour iOS6 et versions ultérieures, pour supprimer l'arrière-plan groupé d'une cellule dans une cellule de vue de tableau 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 déménagé sur ARC (j'ai entendu dire que cela fonctionne, mais je ne l'ai pas testé)

cell.backgroundView = [UIView new];
159
Intentss

Vous devez réellement définir

tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

enlever la bordure des cellules.

39
Chintan Patel

Le hack suivant fonctionne sous iOS 7 - pour le moment. :)

Sous-classe UITableViewCell et utilisez cette cellule pour la section qui ne devrait pas avoir de séparateur.
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];
}
37
Andreas Ley

C'est ce qui a fonctionné pour avoir une table de style groupé

[tableView setSeparatorColor: [UIColor clearColor]];

24
Fede Mika

Ce code a fonctionné pour moi :) 

[self.tableView setSeparatorColor:[UIColor clearColor]];
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
19
Nicolò Ciraci

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

2
user511132
cell.backgroundColor = [UIColor clearColor];

cell.backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
1
Sandip Patel - SM

Depuis iOS 8, la définition de l'attribut separator sur none fonctionne également.

Get rid of cell border

1
prabhu

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

Et n'utilisez pas tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

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

iOS semble faire la différence en rendant un objet nul et en rendant un objet transparent

1
petershine
cell.backgroundView = [UIView new];

Fonctionne comme un charme! Testé! iOS6

1
Ricardo Funk

Définir une vue de contenu supprime également la bordure. Définissez votre vue personnalisée sur cell.contentView.

0
BTRUE

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 UITabelView groupé, en utilisant ARC:

[tableView setSeparatorColor: [UIColor clearColor]];

Ne marche pas

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

Est-ce que ça marche

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

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

[tableViewOutlet setBackgroundView:nil];

dans la méthode viewDidLoad.

0
Kevin Zych

Si vous avez un UITableCellView personnalisé, vous pouvez ajouter 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];
}
0
Kostub Deshmukh