Я изучаю анимацию в Core Animation Programming Guide, и я застрял в понимании паузы и возобновлении анимации на слое.
В документе рассказывается, как приостановить и возобновить анимацию без ясного объяснения. Я думаю, что ключ должен понять, что такое timeOffset
и beginTime
метод CAlayer
.
Этот код является паузой и возобновляет анимацию. В методе resumeLayer
layer.beginTime = timeSincePause;
эта строка действительно меня смущает.
-(void)pauseLayer:(CALayer*)layer {
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
}
-(void)resumeLayer:(CALayer*)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;
}
Любая помощь будет оценена.