AlexWei
AlexWei

Reputation: 1103

how to pause uiview animation?

How to pause uiview animation and just leave it there?

//#define ANIMATION_WORM_OPTIONS (UIViewAnimationOptionCurveLinear|
// UIViewAnimationOptionBeginFromCurrentState)
- (IBAction)pressUp:(id)sender {
    [self.game wormUp];

    [self.gameScene.wormView.layer removeAllAnimations];
    [UIView animateWithDuration:5 delay:0 options:ANIMATION_WORM_OPTIONS
                     animations:^{
                           [self.gameScene.wormView moveUp];
                     } completion:^(BOOL finished) {

                     }];
}
- (IBAction)pressRight:(id)sender {
     [self.game wormRight];
    [UIView animateWithDuration:5 delay:0 options:ANIMATION_WORM_OPTIONS
                     animations:^{
                         [self.gameScene.wormView moveRight];
                     } completion:^(BOOL finished) {

                     }];
}

For example here is what I am trying to do:

When I first tap "Right" a worm goes right.

Then when I tap "Up" during the worm goes right, the worm should stop and go up.

The problem in my code is the removeAllAnimations will first put the worm to the end of first animation end, then begin goes up.

Upvotes: 2

Views: 1133

Answers (2)

Asif Asif
Asif Asif

Reputation: 1511

CFTimeInterval pausedTime = [self.gameScene.wormView.layer convertTime:CACurrentMediaTime() fromLayer:nil];
self.gameScene.wormView.layer.speed = 0.0;
self.gameScene.wormView.layer.timeOffset = pausedTime;

Upvotes: 1

gabbler
gabbler

Reputation: 13766

You need to change the view's frame to the halting position frame. Just add the following before you do the removeAllAnimation on view.layer.

self.theView.frame = [self.theView.layer.presentationLayer frame];

Upvotes: 1

Related Questions