web-dev-qa-db-fra.com

Comment arrêter une animation UIView

J'ai plusieurs UIImageViews dans un UIScrollView que je veux faire bouger lorsque l'utilisateur appuie longuement sur l'un d'eux. Si similaire au comportement que vous obtenez lorsque vous appuyez longuement sur une icône du menu de votre iPad/iPhone.

J'ai donc ce qui suit:

- (void)startWiggling {

    for (UIImageView *touchView in [scrollView subviews]) {

        [UIView beginAnimations:@"wiggle" context:nil];
        [UIView setAnimationDuration:0.1];
        [UIView setAnimationRepeatAutoreverses:YES];
        [UIView setAnimationRepeatCount:FLT_MAX];

        //wiggle 1 degree both sides
        touchView.transform = CGAffineTransformMakeRotation();
        touchView.transform = CGAffineTransformMakeRotation(-0.0174532925);

        [UIView commitAnimations];

    }    

}

- (void)stopWiggling {
    NSLog(@"Stop wiggling");    
}

Cela fonctionne bien. Le problème est ... Comment puis-je faire arrêter se tortiller après que l'utilisateur a appuyé sur un bouton? J'ai un bouton et je l'ai connecté, etc. et il atteint la méthode stopWiggling, donc ça va. Mais alors...

  1. Comment supprimer l'animation UIView de ces UIImageViews?
  2. Puis-je lier cette action à l'utilisateur en appuyant sur le bouton d'accueil sur son appareil?
26
Jules
 #import <QuartzCore/QuartzCore.h>

puis

 [myView.layer removeAllAnimations];

ou

[self.view.layer removeAllAnimations];