4 votes

Mauvaise couleur de fond dans la vue Accessoire sur iOS7

J'ai une UITableView et j'ai défini la couleur de fond de ma cellule en RGB 244, 240, 246. J'ai fait cela en définissant la couleur de fond sur la table, la cellule de la table et la vue de contenu dans la cellule de la table.

Cependant, l'accessoire (dans ce cas, le checkmark) a un arrière-plan noir à la place.

UIAccessoryView a un arrière-plan noir

Lorsque j'active l'édition sur la table, le cercle de suppression du côté gauche a également un arrière-plan noir.

L'édition activée a un arrière-plan plus noir

Je ne semble pas pouvoir changer cette couleur de fond.

J'ai essayé de le faire avec le code suivant :

cell.editingAccessoryView = [[UIView alloc] init];
cell.editingAccessoryView.backgroundColor = [UIColor colorWithRed:244/255 green:240/255 blue:246/255 alpha:1.0];

mais cela n'a aucun effet.

J'ai essayé de chercher un paramètre dans le storyboard mais rien ne semble faire la moindre différence.

J'ai remarqué que si je change la couleur de fond de la cellule de la table et de la vue de contenu en "par défaut", tout l'arrière-plan de la cellule devient noir (même si la couleur de fond de la table est toujours ma couleur personnalisée).

J'ai parcouru le guide de transition iOS7 et je n'ai rien vu relatif à UIAccessoryView. J'ai également cherché sur stackoverflow mais je n'ai pas pu trouver quelque chose correspondant au problème que je rencontre.

Comment puis-je résoudre cela ?

2voto

Josiah Points 2227

Vous devrez définir la propriété backgroundView de l'UITableViewCell, vous ne pouvez pas simplement changer l'editingAccessoryView, comme vous l'avez probablement vu. Faites plutôt quelque chose comme :

UIView *aBackgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
aBackgroundView.backgroundColor = [UIColor votreCouleur];
yourCell.backgroundView = aBackgroundView;

Ou dans

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Utilisez :

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

2voto

Dans iOS 7, les cellules ont un fond blanc par défaut; dans les versions antérieures d'iOS, les cellules héritent de la couleur de fond de la vue de tableau qui les contient. Si vous souhaitez changer la couleur de fond d'une cellule, faites-le dans la méthode tableView:willDisplayCell:forRowAtIndexPath: de votre délégué de vue de tableau.

J'espère que cela vous aide

0voto

Yellow Points 81

Pour la cellule de vue de tableau, il existe une propriété appelée backgroundView. Vous devez simplement changer la couleur de fond pour la backgroundView. C'est tout.

 cell.backgroundView.backgroundColor = [UIColor votreCouleur];

0voto

swainwri Points 11

Pour iOS 7, placez ceci dans le code de cellule de tableau personnalisé

- (void)willTransitionToState:(UITableViewCellStateMask)state
{
    [super willTransitionToState:state];
    if ((state & UITableViewCellStateShowingEditControlMask) == UITableViewCellStateShowingEditControlMask)
    {
        for (UIView *subview in self.subviews)
        {
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellScrollView"])
            {
                subview.backgroundColor  = [UIColor colorWithRed:0.69 green:0.769 blue:0.871 alpha:1];
            }
        }
    }

}

0voto

kinadian Points 238

Le problème a été causé par l'objet couleur. La ligne correcte est :

cell.editingAccessoryView.backgroundColor = [UIColor colorWithRed:244/255.0f green:240/255.0f blue:246/255.0f alpha:1.0];

Je pense que sans le .0f, il traitait les nombres comme des entiers et tronquait toutes les valeurs à 0 (ce qui me donnait du noir).

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