Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why changing of tab, stopping the animation in ios app?

i have multiple tabs in my app. i one view controller there is animation running, when i switch to another view controller, and again comes to view controller with animation, then animation stops,

can anybody guide me to work my Xcode even switching of tab in Iphone app?

- (IBAction)btn:(id)sender {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSString *soundStatus = [defaults objectForKey:@"Sound_Swich"];
    //NSLog(@"soundstatus is %@ ", soundStatus);
    if([soundStatus isEqual:@"YES"])
    {
        [self soundEffect];
    }
    if ([btnpress isEqualToString:@"start"]) {

        btnpress= @"pause";

        int radius = 100;
        circle = [CAShapeLayer layer];

        circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 2.0*radius, 2.0*radius)
                                                 cornerRadius:radius].CGPath;

        circle.fillColor = [UIColor clearColor].CGColor;
        circle.strokeColor = [UIColor greenColor].CGColor;

        circle.lineWidth = 5;
        [imgview.layer addSublayer:circle];



        // Configure animation
         drawAnimation= [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
        drawAnimation.duration            = 5.0; // "animate over 10 seconds or so.."
        drawAnimation.repeatCount         = 8.0;  // Animate only once..
        // Animate from no part of the stroke being drawn to the entire stroke being drawn
        drawAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
        drawAnimation.toValue   = [NSNumber numberWithFloat:1.0f];

        // Experiment with timing to get the appearence to look the way you want
        drawAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

        // Add the animation to the circle
        [circle addAnimation:drawAnimation forKey:@"drawCircleAnimation"];
        timerWasStarted=YES;
        //totalSeconds = 120;
        totalSeconds = 10;
        twoMinTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f
                                                       target:self
                                                     selector:@selector(timer)
                                                     userInfo:nil
                                                      repeats:YES];

       // NSLog(@"start %@",[NSDate date]);
    }// to pause animation and timer
    else if ([btnpress isEqualToString:@"pause"]){
        flag=1;
        btnpress=@"resume";
        pauseStart = [NSDate dateWithTimeIntervalSinceNow:0];
        previousFireDate = [twoMinTimer fireDate];
        [twoMinTimer setFireDate:[NSDate distantFuture]];
       // NSLog(@"pause %@",[NSDate date]);
        [self pauseLayer:circle];


    }// to resume animation and timer

    else if([btnpress isEqual:@"resume"]&&flag==1){
        btnpress= @"pause";
        float pauseTime = -1*[pauseStart timeIntervalSinceNow];
        [twoMinTimer setFireDate:[NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate]];
        [self resumeLayer:circle];
    }

    - (void)pauseLayer:(CALayer *)layer
    {

        pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
        layer.speed = 0.0;
        layer.timeOffset = pausedTime;
        //NSLog(@"pauseoffset %f",pausedTime);
    }

    - (void)resumeLayer:(CALayer *)layer
    {
       // NSLog(@"resume %@",[NSDate date]);

        CFTimeInterval pausedTime1 = [layer timeOffset];
        layer.speed = 1.0;
        layer.timeOffset = 0.0;
        layer.beginTime = 0.0;
        timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime1;
        layer.beginTime = timeSincePause;

        //NSLog(@"resume offset %f",[layer timeOffset]);
    }
like image 815
Jagveer Singh Avatar asked Sep 08 '14 11:09

Jagveer Singh


1 Answers

answer i needed was

 drawAnimation.removedOnCompletion=NO;
like image 152
Jagveer Singh Avatar answered Nov 11 '22 10:11

Jagveer Singh