dev*_*eak 16 animation objective-c uikit ios swift
假设我有3个--A UIViewController,B和C.A < - > B和B < - > C之间的过渡是通过两种方式的不同动画过渡完成的 - 前向和后向(展开segue动画)子类化UIViewControllerTransitioningDelegate和UIViewControllerAnimatedTransitioning.只有向前或向后一步的过渡工作完美,但当我尝试从C-> A(如主页按钮)退回多步时 - B显示没有动画然后B->播放自定义动画,这看起来很奇怪.viewWillApper调用链上的所有中间视图控制器(在我的示例中为B).它几乎就像是从C-> A这样做取消 - C-> B-> A而不是C-> A(有一个音符 - 只播放B-> A动画,C-> B动画不是饰演).我想要的只是C-> A(不是B-> A)动画,没有显示任何其他中间视图控制器或调用他们的viewWillAppear方法.我希望能够为C-> A设置自定义展开segue动画.我怎样才能做到这一点?
注1:我没有在UINavigationController中嵌入我的控制器而且我不愿意,因为据我所知(如果我错了,请纠正我)它不是非常灵活,或者至少可以扩展到不同步骤之间的不同自定义动画.我不喜欢不使用它.
注2:我试图覆盖
override func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue
Run Code Online (Sandbox Code Playgroud)
在A中并返回自定义segue(UIStoryboardSegue派生类)以从C-> A中展开.该方法被调用,但动画正在启动,并在其中间切换到B-> A动画转换委托动画(我已设置为在B-> A之间转换).所以这也不行.
我做错了什么?我很确定Apple开发人员已经弄清楚它并制作了某种API或类似的东西.Apple文档中没有任何内容可以解释如何使用自定义动画解开几步.
最后一件事就是放松了几步后退工作完美,只是自定义动画不是或者至少我不能让它起作用.
任何帮助将受到高度赞赏.
我知道您在问题中明确表示您不想使用UINavigationController,我理解这一点。所以需要接受这个答案。
但我仍然会提倡在这种情况下使用UINavigationController,因为它提供了很多跟踪导航的帮助,并且如果扩展的话实际上非常灵活,甚至可以通过UINavigationControllerDelegate和提供自定义转换UIViewControllerAnimatedTransitioning。
当涉及到导航时,您可以手动操作导航堆栈,使用.pushToViewController()和或直接操作或.popViewController()中的控制器列表。.viewControllerspopToRootController()
我在一款需要大量过渡的游戏中使用过UIKit和UINavigationController,在我看来,它可能需要大量定制,但仍然可以提供大量导航帮助。
| 归档时间: |
|
| 查看次数: |
881 次 |
| 最近记录: |