ダウンロードの開始時に UIImageView の回転を開始するアプリがあります。バックグラウンドに入るまでアニメーションは正常に機能し、アニメーションを再開できないようです。私は UINotificationCenter を使用しており、UIApplicationDidEnterBackgroundNotification と UIApplicationWillEnterForegroundNotification の両方を購読しています。Technical Q&A QA1673を使用してみましたが、何も起こらないようです。私のバックグラウンドとフォアグラウンドの通知方法は次のようになります。
- (void)didEnterBackground:(NSNotification *)notification
{
// NSArray *animationKeys = [_downloadSpinnerImageView.layer animationKeys];
// animationWithPosition = [[_downloadSpinnerImageView.layer animationForKey:@"transform"] copy];
// [self pauseLayer:_downloadSpinnerImageView.layer];
[_downloadSpinnerImageView.layer removeAllAnimations];
}
- (void)willEnterForeground:(NSNotification *)notification
{
[UIView setAnimationsEnabled:YES];
//
// if(animationWithPosition != nil)
// {
// [_downloadSpinnerImageView.layer addAnimation:animationWithPosition forKey:@"transform"];
// animationWithPosition = nil;
// }
//
// [self resumeLayer:_downloadSpinnerImageView.layer];
// [self refreshDownloadStatusView];
[self refreshDownloadStatusView];
}
私は以下を使用してアニメーションを開始しています:
CABasicAnimation *fullRotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
fullRotation.fromValue = [NSNumber numberWithFloat:0];
fullRotation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];
fullRotation.duration = 10;
fullRotation.repeatCount = HUGE_VALF;
fullRotation.removedOnCompletion = NO;
[_downloadSpinnerImageView.layer addAnimation:fullRotation forKey:@"360"];
これが重複しているように思われる場合は申し訳ありませんが、私が見つけた他のすべては、アニメーションを最後の位置から再開し、最初からやり直すのではありませんでした. 最初からやり直すことさえできません。