2010-10-28 5 views
0

J'ai un UILabel dans un UITableCell, et quand je rends l'arrière-plan de l'étiquette transparent, je reçois ces étranges caractères fantômes (voir image ci-dessous), et ça a l'air terrible. Voici mon code:UILabel ghosting lors de l'impression de NSInteger avec fond transparent

gauche:

UILabel *unreadLabel = [[UILabel alloc] initWithFrame:CGRectMake(270, 7, 25, 25)]; 
unreadLabel.text = [NSString stringWithFormat:@"%d", source.unreadCount]; 
unreadLabel.textColor = [UIColor colorWithWhite:100.0f/255.0f alpha:1.0]; 
unreadLabel.font = [UIFont systemFontOfSize:11.0f]; 
[cell addSubview:unreadLabel]; 
[unreadLabel release]; 

droit est le même que celui de la gauche mais avec cette ajouté:

unreadLabel.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.0]; 

UnreadCount est un NSInteger.

alt text

Répondre

1

Vous ajoutez un UILabel à la cellule chaque fois que vous utilisez la cellule. Cependant, les cellules sont réutilisées, donc chaque fois qu'une cellule est réutilisée, vous ajoutez simplement une nouvelle étiquette. Vous devez ajuster ceci pour que vous n'ajoutez qu'une étiquette lorsque vous créez la cellule, et récupérez simplement l'étiquette déjà existante (peut-être en lui donnant une étiquette et en utilisant -viewWithTag:) lors de réutilisations ultérieures de la cellule.

1

Cela se produit lorsque vous dessinez texte encore et encore. Ma première pensée est, il semble que vous ayez un bug de réutilisation des cellules, dans lequel vous n'effacez pas tout lorsque vous réutilisez des cellules. Si vous deviez supprimer la réutilisation des cellules, et juste allouer une nouvelle cellule à chaque fois, je parie que cela ne s'affiche pas. Si c'est le cas, alors regardez bien comment vous effacez une cellule avant de la reconfigurer, et assurez-vous que cette étiquette est traitée correctement et n'est pas ignorée.