Question

Je suis en train un UISlider de simple à animer les progrès de ce:

[UIView animateWithDuration:songLength
         delay:0.0
       options:UIViewAnimationOptionRepeat|
         UIViewAnimationOptionAllowUserInteraction|
         UIViewAnimationOptionBeginFromCurrentState
       animations:^{
        [UIView setAnimationDuration:10.0];
        [myUISlider setValue:10.0];
       } completion:nil
   ];

  [UIView commitAnimations];

lorsque l'utilisateur appuie sur un bouton je veux arrêter l'animation à sa place.

Je comprends que je dois interroger la couche de présentation pour déterminer la valeur, cependant, la couche de présentation est de type CALayer et non UISlider. Par conséquent, il a des propriétés de la couche, comme sa position de x / y sur l'écran, mais pas la valeur du curseur lui-même.

il est logique que par la conception de la couche de présentation peut accéder à toutes les données actuelles d'animation d'une couche, mais je ne suis pas sûr de savoir comment fonctionne que dans le code.

idées?

Était-ce utile?

La solution

je me suis dit à une façon de résoudre cette question, dans le cas où vous avez affaire à la même question. par la conception, il n'y a aucun moyen évident pour interroger un pouce animé d'un UISlider. d'animation fonctionne interrogation bien pour une couche, donc une façon est de créer votre propre fond et animé une couche qui est le pouce.

la façon dont je CONTOURNÉS est l'utilisation de la classe NSTimer. une fois que je veux la barre de progression pour démarrer l'animation i mis un NSTimer pour l'intervalle 0.1s et appeler une fonction pour mettre à jour l'emplacement du pouce. l'animation avant / après le pouce (à mesure qu'elle progresse la partie gauche est bleu et ce qui est resté est encore blanc) est pris en charge automatiquement pour vous.

Voici le code:

updateTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(updateCurrentTime) userInfo:p repeats:YES];

donc chaque .01 d'une seconde cette méthode est appelée et redessine le pouce, créant ainsi l'animation. pas besoin d'un bloc d'animation.

cela fonctionne bien et je suis heureux avec les résultats. Je suis préoccupé par la performance et mesurera la façon dont cette ressource est mise en œuvre intensive. il peut-être une bonne idée d'aller avec la première option que je l'ai mentionné ci-dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top