2010-01-01 8 views
2

J'ai un UIProgressView que j'utilise pour représenter visuellement une minuterie d'une minute. Sa largeur est de 280 pixels. J'utilise NSTimer pour diminuer progressivement la valeur de 'progress', en commençant à progress = 1.0. 'Progress' est mis à jour une fois tous les dixièmes de seconde. Pour tout sauf les deux dernières secondes, il fait exactement ce que je veux. Une fois que la valeur de 'progression' descend en dessous de 0,03, le mouvement de l'UIProgressView s'arrête (montrant environ 0,2 cm de barre) jusqu'à ce que 'progression' atteigne 0,0, point auquel la barre disparaît simplement.UIProgressView ne change pas quand 0.0 <progression <0.03

Est-ce que quelqu'un sait pourquoi UIProgressView se comporte de cette façon? Est-ce intentionnellement ou est-ce que je fais quelque chose de mal?

modifier:

mjdth,

Je ne pense pas que cela a à voir avec l'arrondissement, puisque dans la méthode qui NSTimer appelle, j'utilise NSLog pour montrer la valeur de « progrès », et il est imprimé avec six chiffres significatifs, par exemple

2009-12-31 21: 13: 22,462 XXXXXXX 0,101669
2009-12-31 21: 13: 22,562 XXXXXXX 0,100003

D'ailleurs, si tel était le cas, tout le mouvement serait saccadé, pas seulement les deux dernières secondes. Voici le code qui appelle NSTimer:

- (void) updateProgressBar { 
    timerProgressBar.progress = [playEndTime timeIntervalSinceNow]/60.0; 
    NSLog(@"%f", timerProgressBar.progress); 
} 
+0

Salut Justin, j'ai le même problème avec la barre de temporisation. Avez-vous trouvé du travail? –

Répondre

0

-t-il quelque chose à voir avec l'arrondissement ou le calcul du montant de votre progression? Pouvez-vous montrer le code pour cela afin que nous puissions le regarder. Il se peut simplement que la variable de progression elle-même soit calculée à 0,3.

Avez-vous vérifié pendant l'exécution pour vous assurer que votre variable de progression est mise à jour à 0.2 ou 0.1 etc?

2

Je crois que c'est parce que les embouts arrondis de la barre de progression ne peuvent pas être dessinés partiellement. En dessous d'un certain seuil, mais au-dessus de zéro, seulement les deux extrémités sont dessinées, et seulement quand il dépasse un certain niveau, la partie médiane de l'image est dessinée et étendue.

Cela fonctionnerait-il si vous utilisiez la barre de progression dans sa direction normale vers l'avant? Il peut normalement tirer les dernières secondes parce qu'il n'a pas cette limitation à l'autre extrémité.

0

Si vous (et Apple) ne dérange pas les couleurs inversées, vous pouvez inverser la vue horizontalement et la démarrer vide et la remplir progressivement. Ça va avoir le même problème, mais au début au lieu de la fin.

Questions connexes