35 votes

Définir la couleur d'arrière-plan d'une cellule d'un tableau sur l'iPhone

Je veux obtenir l'effet suivant : une cellule de la vue tableau aura un fond bleu, la suivante sera blanche, la suivante sera à nouveau bleue, puis blanche et ainsi de suite... Pourriez-vous me dire comment faire ?

Merci.

0 votes

1 votes

@willcodejavaforfood ce commentaire est très peu utile et n'est pas pertinent pour la question de l'OP.

3voto

hillmark Points 436

Lorsque vous utilisez le paramètre par défaut des cellules de tableau, les deux propriétés suivantes coloreront à la fois l'arrière-plan de la cellule et la couleur d'arrière-plan de son étiquette, évitant ainsi de devoir créer une étiquette personnalisée en tant que sous-vue de la ContentView de la cellule.

cell.textLabel.backgroundColor = [UIColor redColor];
cell.contentView.backgroundColor = [UIColor redColor];

3voto

Henry Sou Points 443

// méthode permettant de gagner du temps :

//dans la cellule pour la méthode d'indexation :

static NSString* evenIdentifier = @"even";
static NSString* oddIdentifier = @"odd";

__weak identifier;
if(indexPath.row %2 ==0)
{
    identifier = evenIdentifier;
}else{
    identifier = oddIdentifier;
}

cell = dequeue..WithIdentifier: identifier;
if(cell == nil){
    cell = allocOrLoadNib...;
    cell.backgroundColor = (indexPath.row %2 ==0 ? evenColor : oddColor);
}

// modifie le contenu de la cellule et le renvoie ensuite. Travail facile.

// il s'agit d'un code de contour. Veuillez ne pas le copier directement.

3voto

kirans_6891 Points 71

Cela a fonctionné pour moi Dans cellForRowAtIndexPath ,

cell.textLabel.backgroundColor = [UIColor clear];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor grayColor]; //whichever color u want
cell.backgroundColor = cell.contentView.backgroundColor;

Pour vos besoins, comme mentionné précédemment, sur la base de la valeur indexPath % 2, vous pouvez exécuter la fonction ci-dessus.

2voto

John M. P. Knox Points 583

Ce code est une solution un peu plus propre pour le cas où vous utilisez l'étiquette de texte intégrée et ne voulez pas que la couleur de fond blanche de l'étiquette de texte masque la couleur de fond. Cette solution résout également le problème de la violation des coins arrondis d'un style groupé de vue de tableau (qui se produit lorsque vous utilisez cell.contentView.backgroundColor au lieu de cell.backgroundColor) :

UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.backgroundColor = [UIColor redColor];
cell.textLabel.backgroundColor = [UIColor clearColor]; //transparent background

0voto

Bhavesh Nai Points 1525
    UIView *bg = [[UIView alloc] initWithFrame:cell.frame];
    bg.backgroundColor = [UIColor colorWithRed:175.0/255.0 green:220.0/255.0 blue:186.0/255.0 alpha:1]; 
    cell.backgroundView = bg;
    [bg release];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X