0
我見過的代碼暫停/恢復CALayer的動畫,就像這樣:最好的辦法暫停/恢復的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而不會丟失動畫!