2010-10-04 6 views
0

J'ai un UISLider en cours d'animation, qui traverse l'écran sur une période de 91,0 secondes. Je voudrais être en mesure d'arrêter le spot d'animation.Arrêt d'une animation sur place

le code:

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

    [UIView commitAnimations]; 
  • un moyen d'arrêter une animation fixe une nouvelle valeur. Cependant, je ne peux pas lire la valeur actuelle/la position du curseur PENDANT l'animation. lors de l'accès mySlider.value i obtenir la valeur cible (où l'animation se terminera, à savoir 91.

je fait quelques recherches et suis tombé sur le drapeau continue qui lance une méthode d'action et la configuration jusqu'à OUI par défaut à partir de la référence développeur:..

« ... si OUI, le curseur envoie des événements de mise à jour en permanence à la méthode d'action de la cible associée ... »

cependant, la valeur ici est, encore une fois, 91,0 ...

merci vous pour votre temps.

le vôtre,

~ nir.

Répondre

0

Si vous demandez à la couche UISlider pour ses -presentationLayer, vous pouvez ensuite interroger cette copie de la couche pour les propriétés animées en temps quasi réel. À partir de la CALayer documentation:

Renvoie une copie de la couche contenant toutes les propriétés telles qu'elles étaient au début de la transaction en cours, toutes les animations actives étant appliquées.

+0

merci pour votre réponse tjw. suite à votre suggestion, j'ai trouvé que cette classe fournit des informations sur la couche elle-même. par exemple, j'ai pu extraire la position.x et la position.y du curseur mais pas la valeur actuelle du curseur lui-même. pensées? –

+0

Oups, j'ai l'impression d'avoir mal compris votre question. Peut-être pouvez-vous modifier votre question pour montrer comment vous contrôlez la vitesse d'animation de la valeur. Vous appelez vraisemblablement -setValue: animated:, mais cela ignore la durée définie dans tout bloc d'animation UIView englobant. – tjw

+0

merci TJW, je viens de ré-éditer le poste et ajouté du code. J'espère que ce sera plus clair maintenant ce que j'essaie d'atteindre. Merci pour votre temps. –