次のように、CALayer アニメーションを一時停止/再開するコードを見てきました。
【一時停止する】
CALayer *layer = object.icon.layer;
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
[再開します]
CALayer *layer = object.icon.layer;
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = timeSincePause;
そして、これはうまく機能します。問題は、新しい ViewController が ViewController スタックにプッシュされた場合、またはアプリがバックグラウンドに入ってから戻ってきた場合、CALayer アニメーションがすぐに終了位置にスナップすることです!
効果的な一時停止/一時停止解除 UIView アニメーションを処理する良い方法は何ですか? アプリケーションを最小化して元に戻したり、アニメーションを失うことなくアクティブな ViewController を変更したりできます!