我已经使用手势识别器和passenger_ruby
在两个视图控制器之间实现了交互式过渡。我正在进行自定义滑动过渡。
我想改进2件事以便与滚动视图动画类似:
响应性。当你超快速和短暂平移时,下一个vc甚至没有显示,加上一个bug(UIPercentDrivenInteractiveTransition
没有被调用,但这是另一个故事)
有没有办法预加载下一个视图控制器,让它作为子视图控制器可能?好像我在viewDidLoad中做了太多工作。
在我的实现中,当手势识别器结束时,我调用animationEnded
。这可以正常工作,但是如果在完成此转换之前启动新的平移手势,则UI只会跳转而不是平滑滚动。我可能会在延迟后致电finishInteractiveTransition
,并在同一时间手动调用finishInteractiveTransition
吗?
可能我可以使用其他API集来进行交互式动画(但滚动视图不是一个选项)?
仅供参考:这是交互式滑动期间的视图层次结构,我的手势附加到导航视图:
答案 0 :(得分:2)
尝试继承UIPercentDrivenInteractiveTransition
并实现这些方法。这应该有助于缓和混蛋:
- (void)startInteractiveTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
[super startInteractiveTransition:transitionContext];
self.layer = transitionContext.containerView.layer;
}
- (void)finishInteractiveTransition
{
[super finishInteractiveTransition];
self.layer.speed = 1;
self.layer.beginTime = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil] - self.layer.timeOffset;
}
- (void)cancelInteractiveTransition
{
[super cancelInteractiveTransition];
self.layer.speed = -1;
self.layer.beginTime = CACurrentMediaTime();
}