我有一个基本动画,只需旋转图像,我正在使用核心动画。在 viewWillAppear 方法中,我创建了动画:
gearRotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
gearRotate.repeatCount = HUGE_VALF;
gearRotate.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
gearRotate.duration = 2;
gearRotate.fromValue = 0;
gearRotate.toValue = [NSNumber numberWithFloat:(360*M_PI)/180];
[gearButton.imageView.layer addAnimation:gearRotate forKey:@"transform.rotation"];
[self stopGear];
我最初调用 stopGear 来暂停动画。我确实在 viewDidLoad 中有这段代码。无论如何,当动画被调用时,它工作正常:
-(void)startGear {
CFTimeInterval pausedTime = [gearButton.imageView.layer timeOffset];
gearButton.imageView.layer.speed = 1.0;
gearButton.imageView.layer.timeOffset = 0.0;
gearButton.imageView.layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [gearButton.imageView.layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
gearButton.imageView.layer.beginTime = timeSincePause;
}
这种暂停方法也可以正常工作:
-(void)stopGear {
CFTimeInterval pausedTime = [gearButton.imageView.layer convertTime:CACurrentMediaTime() fromLayer:nil];
gearButton.imageView.layer.speed = 0.0;
gearButton.imageView.layer.timeOffset = pausedTime;
}
但是,如果我转到另一个视图然后回到主视图,这一切都会失败。该应用程序运行良好,但如果我去过另一个视图,动画将永远不会运行。
这就是为什么我最初将此代码移动到 viewWillAppear 的原因,认为我需要重新创建动画,但没有 bean。有任何想法吗?
谢谢。