Je définis un UIControl personnalisé avec trois étiquettes, puis sur la fonction viewDidLoad du contrôleur de vue principal, j'ajoute à plusieurs reprises plusieurs instances de ce UIControl dans la vue défilement.
J'ai besoin de l'une des étiquettes de l'UIControl pour être mise à jour avec une nouvelle valeur chaque seconde. J'ai une question, comment effacer la vue personnalisée précédemment dessinée? Ou quelle est la méthode pour mettre à jour cette étiquette avec les meilleures performances de dessin?
- (void) updateMinuteLabel{
CustomIconControl *control = nil;
for (control in scrollView.subviews){
if ([view isKindOfClass:[CustomIconControl class]] && control.tag >0){
CustomIconControl *item = (CustomIconControl *) control;
item.intMinute += 1;
[item setNeedsDisplay];
}
}
}
Dans la drawRect: fonction du CustomIconControl, j'utilise la
[minuteString drawInRect: minuteRect withFont: [UIFont systemFontOfSize:10];
Avec ce code, il continue de tirer sans effacer les contrôles établis précédemment.
Quelqu'un peut-il aider? S'il vous plaît dites-moi si vous avez besoin de plus d'informations, bien sûr j'ai le code pour personnaliser le dessin de CustomIconControl, l'initialisation du timer, viewDidLoad, etc
salut Andrew, j'ai dessiné trois étiquettes avec des méthodes drawInRect Ma solution temporaire consiste à redessiner tout le rect de ma vue personnalisée (CustomIconControl) avec la couleur de la couleur d'arrière-plan. Ensuite, redessinez la chaîne en utilisant le drawInRect, mais cela semble beaucoup de travail, j'ai juste besoin de mettre à jour la chaîne que je viens de dessiner avec drawInRect: Le setNeedsDisplay de CustomIconControl va redessiner tout le rect, dans lequel je ne veux pas, car outre l'étiquette de la minute, les deux autres étiquettes et l'arrière-plan de l'image ne changent pas. –
Je vois. Dans drawRect, appelez ceci en premier: 'CGContextClearRect (UIGraphicsGetCurrentContext(), rect);' Ceci effacera le rect afin que le dessin suivant ne s'empile pas. – Andrew
oohhh merci Andrew, ça marche;) –