- (void)pauseTimer
{
if (_timer) {
_pauseStart = [NSDate dateWithTimeIntervalSinceNow:0];
_previousFireDate = [_timer fireDate];
[_timer setFireDate:[NSDate distantFuture]];
// 停止动画
CFTimeInterval pauseTime = [_timerLayer convertTime:CACurrentMediaTime() fromLayer:nil];
_timerLayer.speed = 0.0;
_timerLayer.timeOffset = pauseTime;
}
}
- (void)resumeTimer
{
if (_timer) {
float pauseTime = -1 * [_pauseStart timeIntervalSinceNow];
[_timer setFireDate:[_previousFireDate initWithTimeInterval:pauseTime sinceDate:_previousFireDate]];
CFTimeInterval pausedTime = [_timerLayer timeOffset];
_timerLayer.speed = 1.0;
_timerLayer.timeOffset = 0.0;
_timerLayer.beginTime = 0.0;
CFTimeInterval timeSincePause = [_timerLayer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
_timerLayer.beginTime = timeSincePause;
}
}
pause or resume timer
最新推荐文章于 2022-08-22 17:56:06 发布