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!
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];
Vous devez réellement définir
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
enlever la bordure des cellules.
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];
}
C'est ce qui a fonctionné pour 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 fonction 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];
Depuis iOS 8, la définition de l'attribut separator sur none fonctionne également.
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
cell.backgroundView = [UIView new];
Fonctionne comme un charme! Testé! iOS6
Définir une vue de contenu supprime également la bordure. Définissez votre vue personnalisée sur cell.contentView.
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
UIView *backView = [[UIView alloc] initWithFrame:CGRectZero];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
cell.backgroundColor = [UIColor clearColor];
[cell.contentView addSubview:imageView];
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.
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];
}