comment afficher le compte à rebours sur UILabel dans l'iPhone?
-
19-09-2019 - |
Question
J'ai un UILabel et un uislider sur une vue. Je veux régler l'heure de étiquette à l'aide du curseur slider.range est 00:00:00 à 03:00:00. des moyens 3 hours.and intervel sur curseur est de 0,5 minutes.also comment show.i voulez que le minuteur fonctionne même si l'application est fermée.
La solution
Tout d'abord, il n'y a aucun moyen de maintenir le fonctionnement de la minuterie après votre application est fermée. des applications d'arrière-plan ne sont pas autorisés uniquement sur l'iPhone. Il y a plusieurs façons de le simuler avec une minuterie (enregistrer un horodatage lors de la sortie d'applications, et vérifiez contre le moment où il commence à remonter), mais il ne sera pas gérer le cas où votre temps ne soit écoulé avant que l'application est a commencé vers le haut.
En ce qui concerne la mise à jour du UILabel avec le compte à rebours, un NSTimer fonctionnerait probablement. Quelque chose comme cela, en supposant que vous avez une minuterie NSTimer, un secondsLeft int, et un countdownLabel UILabel dans votre classe:
Créer la minuterie:
timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
La méthode de updateCountdown:
-(void) updateCountdown {
int hours, minutes, seconds;
secondsLeft--;
hours = secondsLeft / 3600;
minutes = (secondsLeft % 3600) / 60;
seconds = (secondsLeft %3600) % 60;
countDownlabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}
je faire quelque chose similaire dans l'une de mes applications, mais ne pas le code à portée de main en ce moment.
Autres conseils
Ce code est erroné.
timer = [NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
Il devrait être.
timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
vous pouvez maintenir votre minuterie lorsque votre application n'entre fond,
Craver de @shawn dit u vous ne pouvez pas faire cela, mais vous pouvez le faire lorsque l'application entre en arrière-plan ( « non » se termine), qui est un événement différent applicationDidEnterBackground et que vous aurez besoin d'un GCD multithreading (grand dispatch central).
plase consulter ce lien