我有一个带有背景图片的按钮,当应用程序运行时我希望按钮旋转,当应用程序进入后台时,按钮应该停止旋转。
我调用无限旋转按钮的方法startSpiningAnimation
当应用程序转到后台时,我调用stopSpinningAnimation
来停止旋转动画。
- (void)startSpiningAnimation {
[self stopSpinningAnimation];
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0];
animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
animation.duration = 10.0f;
animation.repeatCount = INFINITY;
[self.button.layer addAnimation:animation forKey:@"SpinAnimation"];
}
- (void)stopSpinningAnimation {
[self.button.layer removeAllAnimations];
}
- (void)handleApplicationDidBecomeActiveNotification:(NSNotification *)not {
[self startSpiningAnimation];
}
- (void)handleApplicationWillResignActiveNotification:(NSNotification *)not {
[self stopSpinningAnimation];
}
一切都很好我唯一的问题是,每当应用程序到达前景并且动画开始时,它从原始位置开始。
(我完全明白为什么会发生这种情况,肥胖的是我在应用程序转到后台时移除所有动画..我只是不知道如何解决这个问题)
我想要的是按钮旋转动画将从它的最后一个角度继续。
答案 0 :(得分:0)
您可以在update()
方法中收集所有“动态”行为,只有当应用位于前台时才会调用此方法。
因此,您可以使用创建,更新和停止动画的方法。当您的应用程序失焦时,不再调用更新,并且不再更新动画。但它仍然存在,相关变量保留在以前的状态中。