为什么改变标签,停止在iOS应用程序的animation?

我在我的应用程序中有多个选项卡。 我一个视图控制器有animation运行,当我切换到另一个视图控制器,并再次来animation视图控制器,然后animation停止,

任何人都可以指导我工作我的Xcode甚至切换在iPhone应用程序选项卡?

- (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]); } 

我需要的答案是

  drawAnimation.removedOnCompletion=NO;