Stop an UIView Animation

10,770

Solution 1

Try this:

[myView.layer removeAllAnimations];

and be sure to import the Quartz framework as well:

#import <QuartzCore/QuartzCore.h>

Animations are applied using CoreAnimation in the QuartzCore framework, even the UIView animation methods. Just target the view's layer that you want to stop animating, and remove its animations.

Solution 2

You could do this:

[self.view.layer removeAnimationForKey:@"Move randomly"];

This is more effective than calling [self.view.layer removeAllAnimations] because this can potentially remove other animations that you would want to keep.

Share:
10,770
alexclp
Author by

alexclp

Updated on June 04, 2022

Comments

  • alexclp
    alexclp almost 2 years

    Possible Duplicate:
    Cancel a UIView animation?

    I have the following animation and i want to stop it when i press a button. Can you please tell me how can i do it? I can't figure it out how. Thanks.

    -(void)animationLoop:(NSString *)animationID finished:(NSNumber *)finished context:(void    *)context 
    {
    [UIView beginAnimations:@"Move randomly" context:nil]; 
    [UIView setAnimationDuration:1]; 
    // [UIView setAnimationBeginsFromCurrentState:NO];
    
    
    CGFloat x = (CGFloat) (arc4random() % (int) self.bounds.size.width); 
    CGFloat y = (CGFloat) (arc4random() % (int) self.bounds.size.height); 
    
    CGPoint squarePostion = CGPointMake(x, y); 
    strechView.center = squarePostion; 
    
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(animationLoop:finished:context:)];
    
    [UIView commitAnimations];
    
    }