5
Ich habe mehrere Tabs in meiner App. Ich ein View-Controller gibt es Animation läuft, , wenn ich zu einem anderen View-Controller wechseln, und kommt wieder, um Controller mit Animation anzuzeigen, dann Animation stoppt,Warum Tab ändern, die Animation in der ios App stoppen?
kann mir jemand helfen, meine Xcode sogar Wechsel der Registerkarte in iPhone App zu arbeiten ?
- (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;
[email protected]"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]);
}
'viewWillAppear ist:' Methode ist in der Animation Registerkarte da? – sreekanthk
sogar schreiben Code in ViewWillAppear stoppt die Animation, –
immer wenn Sie die Registerkarte wechseln und auf die gleiche Registerkarte zurückkehren, wird die 'viewWillAppear:' -Methode aufgerufen und die Ansicht wird zurück zur normalen Form. – sreekanthk