我开发了一款内容丰富的应用,拥有超过60个屏幕 我想在它们之间制作动画片段而不制作故事板箭头或连接,以简化事物,让我们说我只有9个屏幕的应用程序,A,B,C,D,E,F,G,H,我
如果我使用故事板segues,那么我将需要在每个屏幕和来回之间建立连接...最后是意大利面/蜘蛛的东西,看看这个屏幕例如,这是因为几乎任何屏幕都可以导致应用程序中的另一个开发
所以,我需要帮助的是以下内容,
1-如何在不使用界面构建器连接的情况下进行动画分段?
我使用的是这个
ram.vc = self.storyboard!.instantiateViewControllerWithIdentifier("MeBeforeSignUp") //MeBeforeSignUp
ram.vc.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
self.presentViewController(ram.vc, animated: true, completion: nil)
2 - 如何使用后退按钮将其推入堆栈?为了解释这一点,我的意思是,我希望在一系列过渡过程中使用相同的导航顺序进行后退按钮。
考虑这个导航序列,从A - > B - > C - > ...
序列:A-> B-> C-> G-> F-> B-> C-> - > B-> D-> B-> C 我按顺序从[A]移动到... [C] 现在我在[C]中,我有一个后退按钮,可以追溯到[B] 现在我在[B]中,我有一个后退按钮,可以追溯到[D] ...... 等等,直到我没有后退按钮到达[A],因为堆栈是空的
为很多屏幕添加此功能的最佳方法是什么?
3-为什么UIModalTransitionStyle
没有提供大量动画?
这些只是我在自动填充中可以看到的动画
CoverVertical
CrossDissolve
FlipHorizontal
PartialCurl
4-我可以使用更多动画吗?
5-为什么没有动画选项?例如CoverVertical
没有速度选项(从上到下,从下到上)
我真的在寻求帮助,我们将非常感激。
答案 0 :(得分:2)
查看UIViewControllerAnimatedTransitioning
协议。这是一个难以破解的难题,但是一旦你这样做,你将能够创建你想要的任何动画过渡,而不受IB或其默认动画的约束。
基本上,您将初始视图控制器正常嵌入UINavigationController
。连接AnimatedTransitioning
将允许您拦截导航控制器中的每个Push和Pop,并指示他们应该使用什么动画。这将为您提供所需的自定义动画,以及正常的导航堆栈。
对于后退按钮,您需要显示自然包含它的导航栏,或者在视图中添加一个按钮,从视图控制器中弹出视图控制器。
-------------编辑提供逐点答案-------------
您应该使用我上面提到的UIViewControllerAnimatedTransitioning
协议。这是一个很大的话题,但幸运的是,有大量的教程和解释如何在线工作。一开始会感到困惑,但一旦陷入困境就很棒。不幸的是,不是剪贴式的答案类型。
如果您将视图控制器A嵌入UINavigationController
,则可以立即获得此行为。如果您不想看到屏幕顶部的栏,您可以隐藏它,并在适当的时候以编程方式调用popViewController
方法返回堆栈中的一个viewController。
模态呈现的视图控制器未添加到导航控制器的堆栈中,因此我将避免使用presentViewController
或任何模态呈现的转换。为了获得您所追求的行为,您应该使用导航控制器而不是存在来推送和弹出视图控制器。我希望他们为我们提供更多默认转换,但我们鼓励开发人员创建适合其应用的自定义转换。
使用UIViewControllerAnimatedTranisitioning
您可以创建您想要的任何转换。您可以真正发挥创意,并以这种方式为您的应用提供独特的感受。
与4的答案相同。您可以控制过渡中每个动画的每个方面。它完全是定制的。
这是UINavigationController
的默认行为。只要你不在堆栈中活着的视图控制器上留下一堆长时间运行的任务,你就应该记忆良好。不太可能你会这样做。