2011-09-08 6 views
14

J'ai eu le problème suivant.Obtenir la position actuelle de scrollview animé

i un sous-classé UIScrollView qui contentOffset est animée par ce code:

[UIView animateWithDuration:1.0 
         delay:1.0 
        options:options 
       animations:^{ 
        self.contentOffset = CGPointMake(label.frame.size.width, 0); 

       } 
       completion:^(BOOL completed) { 
        //some other stuff 
       }]; 

Maintenant, lorsque l'utilisateur « willBeginDragging » le scrollview, je veux arrêter l'animation et définir les scrollview.contentoffset au courant position qu'il a dans l'uianimation. Par exemple, l'utilisateur entre dans l'écran, après 1 seconde, la vue déroulante commence à défiler, si l'utilisateur touche le défilement après 2 secondes et le fait glisser, le scrollview.contentoffset doit avoir la position exacte de la position d'animation actuelle .

Si j'obtiens la valeur de décalage de contenu dans la méthode willbegindrag, elle est déjà la dernière valeur de l'animation, car uianimation met les valeurs à l'état final, puis l'anime.

Comment puis-je obtenir la position actuelle du décalage de contenu à partir de l'animation en cours d'exécution?

NSLog(@"pos of content x %f, y %f", [[self.layer presentationLayer] frame].origin.x, [[self.layer presentationLayer] frame].origin.y); 

'ai En savoir plus sur la couche de présentation, mais la vue elle-même est pas animé, j'ai besoin scrollview.contentoffset.

mhh, des idées? thx

DÉJÀ RESOLU:

Le self.layer est tout à fait correcte couche de présentation.

Mais je devais utiliser les limites et pas le cadre ....

Désolé, maintenant vous et je le sais: P

donc le bon code est:

CGPoint pos = [[self.layer presentationLayer] bounds].origin; 

pour obtenir la position actuelle d'un scrollview animé pendant l'animation.

Répondre

8

Vous pouvez obtenir le contenu alors que le décalage ScrollView défile en utilisant le code suivant ...

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 

NSLog(@"%f", scrollView.contentOffset.x); 

} 
+0

Merci beaucoup – SampathKumar

+0

tous les retours 0.000, –

+1

Cette réponse est hors-sujet. La question est d'obtenir le contentOffset mid-animation. Cette solution obtient contentOffset chaque appel de défilement. – rizzes

Questions connexes