UIPercentDrivenInteractiveTransition
是iOS 7中可用的转换。是否可以在iOS 7之前实现UIPercentDrivenInteractiveTransition
?
例如,在iOS 6中使用CAAnimation
和UIPanGestureRecognizer
时,我可以执行相同的动画更新百分比吗?
更新: 我可以按照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;
答案 0 :(得分:1)
查看I wrote about animation timing,然后向下滚动到“控制动画时间”。有一个accompanying example on GitHub使用滚动事件手动驱动滚动事件中的动画。
您可以使用相同的技术(在图层上设置timeOffset)和手势识别器来驱动动画。
还有一个更简单的示例in my answer here,它使用滑块及其动作来控制动画。