我为导航控制器创建了一个自定义过渡,当用户平移时,下面显示的下一个控制器视图,当前控制器的视图向上移动。我希望通过跟踪触摸来移动该视图(就好像它在触摸点粘在手指上),但我不知道如何将平移手势识别器中的转换传递给实现UIViewControllerAnimatedTransitioning的对象。好吧,我这样做但我无法从[UIView animateWithDuration ...]块中访问它(看起来块执行一次,我认为它将作为完成更改的百分比执行)。我怎么能做到这一点?
要以不同的方式提问,如果您使用ios7中的照片应用,当您正在查看照片时,请用两根手指触摸并捏/移动,您将看到它跟随手指(动作) 。这个的任何示例代码?
答案 0 :(得分:1)
您需要创建一个单独的动画控制器作为UIPercentDrivenInteractiveTransition
的子类,以配合您的自定义过渡动画。这个类将计算动画完成程度的百分比。在单个SO答案中有太多要解释的内容,但请查看文档here。您还可以参考我的一项具有互动功能here的自定义过渡动画的实现,以查看它的实际效果。
答案 1 :(得分:1)
Croberth的回答是正确的。你实际上有两个选择。
如果你想保留你的自定义动画,那么使用UIPercentDrivenInteractiveTransition并在手势进行时不断更新它,就像我的这个例子一样:
但是,我更喜欢将控制器拆分为两个独立的案例;如果我们是交互式的(使用手势),那么我只是在手势进行时手动更新视图位置我自己,包括在最后完成或反转它,如下代码所示: / p>