Question

Dans mon application, j'ai une vue de table avec customViewCells. Je la classe sous-classé UITableViewCell et ajouté une image qui charge et async pour le texte que j'utilise cell.textLabel.text = @"someThext".

Pour les cellules de la couleur de fond est alternativement [UIColor darkGrayColor] et [UIColor whiteColor].

Quand je lance l'application dans le simulateur et au téléphone le textLabel de la cellule a le fond blanc. Je veux mettre ce soit clair, parce que je veux la couleur de fond de la cellule pour être complet une bande puis blanc, puis une autre bande.

Dans la méthode d'initialisation de ma cellule personnalisée j'ajouté, en espérant que le blanc se transformera en rouge, mais il n'a pas d'aucun effet:

[self.textLabel setBackgroundColor:[UIColor redColor]];

J'ai essayé aussi:

self.textLabel.backgroundColor = [UIColor redColor];

Mais cela aussi ne fonctionne pas ... si j'ajoute un UILabel comme sous-vue, la couleur de fond de l'étiquette peut être réglée, mais je ne veux pas faire cela parce que quand je tourne le téléphone, je veux que mon étiquettes pour agrandir auto.

Toutes les idées pourquoi définir la couleur d'arrière-plan de cell.textLabel ne fonctionne pas?

Merci

Était-ce utile?

La solution 2

Le problème est que UIKit définit la couleur d'arrière-plan de la cellule dans le procédé -setSelected. J'ai eu la méthode, mais ne pas self.textLabel.backgroundColor = [UIColor clearColor]; self.detailTextLabel.backgroundColor = [UIColor clearColor]; en elle, donc je les ai ajoutés et le problème mentionné dans l'image a été fixé.

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    self.textLabel.backgroundColor = [UIColor clearColor];
    self.detailTextLabel.backgroundColor = [UIColor clearColor];
}

Autres conseils

Si vous ne voulez pas sous-classe UITableViewCell vous pouvez simplement ajouter ceci:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
     [[cell textLabel] setBackgroundColor:[UIColor clearColor]];
     [[cell detailTextLabel] setBackgroundColor:[UIColor clearColor]];
}

On dirait que Apple a changé quelque chose. Faire exactement cela fonctionne dans iOS4:

self.textLabel.backgroundColor = [UIColor xxxColor];
self.detailTextLabel.backgroundColor = [UIColor xxxColor];

Au moins jusqu'au point que l'arrière-plan de l'étiquette est transparente ou prend la couleur d'arrière-plan. Pas encore possible de définir une propre couleur d'arrière-plan.

Nice que cela est fixe, mais un peu surprenant lors des tests si vous développez avec le SDK 4.1 de base et min. déploiement 3.1 pour iPhone et iPad classique.

Pour définir une couleur d'arrière-plan clair, vous pouvez utiliser clearColor:

    [[cell textLabel] setBackgroundColor:[UIColor clearColor]];

Est-ce que vous voulez dire?

voir ce post: Comment puis-je mettre UITableViewCellSelectionStyle propriété à une couleur personnalisée?

dans votre cas il suffit d'utiliser un UIView avec la couleur de fond blanc

Je n'ai pas essayé mais voici une supposition ... Afin de tirer plus vite la propriété opaque de l'étiquette peut être définie sur true par défaut.

Essayez

cell.titleLabel.opaque = NO;
cell.titleLabel.backgroundColor = [UIColor clearColor];

Si cela ne fonctionne pas non plus je serais probablement renoncer à ce point et créer mon propre UILabel pour la cellule.

pour définir la couleur de la Textlabel vous devriez faire ceci: t.textColor = [UIColor colorYouWantRGB];

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top