UIPercentDrivenInteractiveTransition
是iOS 7中可用的转换。是否有可能在iOS 7之前实现UIPercentDrivenInteractiveTransition
?iOS 7之前的百分比动画
例如,在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;
是的,我正在考虑timeOffset是关键点,我会检查你的例子。非常感谢! – codiction
我更新了我的问题,你有任何想法如何取消动画? – codiction
@codiction您可以随时删除动画,并将当前表示层值的另一个动画添加回原始值。您不必与此动画交互,因此请记住在取消手动动画和添加回归动画之间将图层的速度设置回“1.0”。 –