ios - 更改rootViewController时从正确的动画滑动

标签 ios uiview uiviewanimation

我正在尝试使用从右滑动的动画来更改rootViewController。

我知道如何使用翻转动画:

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewControllerWithIdentifier("LandingViewController") 


UIView.transitionWithView( UIApplication.sharedApplication().keyWindow!,
                           duration: 0.5,
                           options: UIViewAnimationOptions.TransitionFlipFromLeft,
                           animations: { UIApplication.sharedApplication().keyWindow?.rootViewController = viewController; },
                           completion: nil)

但是,UIViewAnimationOptions没有从右向滑动的动画。
我该如何实现?

最佳答案

试试这个

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewControllerWithIdentifier("LandingViewController") 

let navigationController = UIApplication.sharedApplication().keyWindow?.rootViewController.navigationController

//first push the viewController
navigationController?.pushViewController(viewController, animated: true)

然后,在viewController的viewDidAppear处,您应该执行此代码
//remove all previous controllers in the stack by settings viewControllers stack with only current viewController
self.navigationController?.viewControllers = [self]

希望对您有所帮助

关于ios - 更改rootViewController时从正确的动画滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39133255/

相关文章:

ios - 从查找表中解析查询对象

ios - UIView 上的 UIStoryboard 约束

iphone - 用户单击信息图标后抛出免责声明文本的最简单方法?

ios - 无法快速停止 UIView 动画

ios - UIView 动画的完成 block 在动画完成之前被调用

ios - iOS 外设上的 BLE 广告数据

ios - 测试 iOS 应用程序通常有多少个版本?

ios - Swift 中 UIInterfaceOrientation 到 AVCaptureVideoOrientation 的枚举转换

cocoa-touch - 动画内在内容大小的变化

animation - iOS 7 Spring 动画的时间与位置图方程(animateWithDuration :delay:usingSpringWithDamping:. ..)