5

我实现了自己的自定义容器视图控制器,并尝试使其与 iOS 7 视图控制器转换兼容。我使我的自定义容器视图控制器符合并在我调用和时UIViewControllerContextTransitioning发送。只要我只使用动画过渡,这一切都可以正常工作。selftransitionDuration:animateTransition:

现在我想让它与交互式转换一起工作,所以我调用交互控制器startInteractiveTransition:而不是动画控制器animateTransition:self再次用作参数。但是,如果我使用 a作为交互控制器,它会在我的上下文(即容器视图控制器本身)上UIPercentDrivenInteractiveTransition调用一个方法。_animator当然,我还没有实现这个私有且无证的方法,所以它崩溃了......

我在实施中遗漏了什么吗?仅与 Apple 类兼容,UIPercentDrivenInteractiveTransition因为它使用了一些实现魔法(如它要求所有内容都应位于UIView动画块中)?文档和头文件使我们看起来可以实现自己的容器视图控制器并且仍然使用自定义转换,但这是真的还是只是一厢情愿,因为实际上没有人会这样做?

如果我不能使用UIPercentDrivenInteractiveTransition,那么交互/动画逻辑到底应该在哪里?在UIViewControllerTransitionCoordinatorContext对象?在UIViewControllerInteractiveTransitioning对象中(很可能,这个对象是驱动程序......)?或者在UIViewControllerAnimatedTransitioning对象中(这可能是真正的动画应该发生的地方,但这是否意味着animateTransition:在交互过程中多次调用?或者为交互过渡的每个步骤添加新方法?)

编辑:文档说:

百分比驱动的交互式过渡对象在一个视图控制器的消失和另一个视图控制器的出现之间驱动自定义动画。它依赖于一个过渡动画代理——一个采用协议的自定义对象UIViewControllerAnimatorTransitioning——来设置和执行动画。

没有UIViewControllerAnimatorTransitioning协议。假设是一个错误,或者是在 iOS 7 开发过程中发生的名称更改,实际上是UIViewControllerAnimatedTransitioning协议,我们如何将交互控制器与动画控制器联系起来?我想这是驱动转换的视图控制器的责任,但我没有看到任何 API 来建立这个链接,所以这意味着它UIPercentDrivenInteractiveTransition确实是为 Apple 类保留的?

4

1 回答 1

0

我试图自己做同样的事情,最后写了我自己的UIPercentDrivenInteractiveTransition等价物。似乎百分比驱动的过渡要求动画并在交互式过渡开始后实际启动它。不过,取消时我在实现反向动画时遇到了一些麻烦。

于 2013-10-16T20:20:23.503 回答