iOS 7之前的百分比动画

时间:2014-01-12 13:24:23

标签: ios animation

UIPercentDrivenInteractiveTransition是iOS 7中可用的转换。是否可以在iOS 7之前实现UIPercentDrivenInteractiveTransition

例如,在iOS 6中使用CAAnimationUIPanGestureRecognizer时,我可以执行相同的动画更新百分比吗?

更新: 我可以按照panGesture更新动画的百分比,并在我的手指完成后完成整个动画:

CFTimeInterval pausedTime = [self.transitionView.layer timeOffset];
self.transitionView.layer.speed = 1.0;
self.transitionView.layer.timeOffset = 0.0;
self.transitionView.layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [self.transitionView.layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
self.transitionView.layer.beginTime = timeSincePause;

但如果我想取消动画,我该怎么办? 我的想法是将autoreverses设置为是,并将timeOffset计算为我的预期。例如,动画持续时间为1秒,总时间为2秒,如果我想在timeOffset为0.5时反转动画,则反向进度中的相同状态为1.5。这是我的代码,它不起作用:

self.animation.autoreverses = YES;
self.transitionView.layer.timeOffset = 2 - percent; // duration is 1s, percent is current time offset
CFTimeInterval pausedTime = [self.transitionView.layer timeOffset];
self.transitionView.layer.speed = 1.0;
self.transitionView.layer.timeOffset = 0.0;
self.transitionView.layer.beginTime = 0.0;

CFTimeInterval timeSincePause = [self.transitionView.layer convertTime:CACurrentMediaTime() fromLayer:nil] -  pausedTime;

self.transitionView.layer.beginTime = timeSincePause;

1 个答案:

答案 0 :(得分:1)

查看I wrote about animation timing,然后向下滚动到“控制动画时间”。有一个accompanying example on GitHub使用滚动事件手动驱动滚动事件中的动画。

您可以使用相同的技术(在图层上设置timeOffset)和手势识别器来驱动动画。

还有一个更简单的示例in my answer here,它使用滑块及其动作来控制动画。