为什么我的应用在没有动画的情况下旋转?

时间:2016-09-21 13:12:53

标签: ios uiviewcontroller rootviewcontroller

我的应用程序带有动画闪屏和主界面。

要从启动画面转换到主界面,我使用了以下代码:

presentViewController(mainViewController, true) {
    UIApplication.sharedApplication.keyWindow.rootViewController = mainViewController
}

但显然这种方法破坏了自转(让我花了一些时间找到那个)。现在我遇到的问题是这种自动旋转不适用于动画。

我想这不是动画,因为旧的viewcontroller仍然位于另一个viewcontroller下方,它只是转发新的方向。

如何正确从一个viewcontroller转换到下一个viewcontroller,同时能够销毁旧的viewcontroller并保持旋转?

修改:当我关闭我的应用时,我注意到我的主屏幕旋转了(从启动方向到关闭应用时的方向)

2 个答案:

答案 0 :(得分:2)

除了凯末尔所说的,我找到了我的具体问题:

我真的不明白为什么会出现这个问题。我有一个在Info.plist中设置的故事板作为主界面(我忽略了这一点,因为我不需要它)。在我的AppDelegate.finishedLaunching中,我创建了一个新窗口并设置了它的根视图控制器,然后我将其设置为关键窗口。删除AppDelegateInfo.plist中的窗口设置可解决问题。

答案 1 :(得分:1)

根据UIWindow文档;

  

如果窗口具有现有视图层次结构,则旧视图为   在安装新的之前删除。

来源链接 - > here

因此,系统会自动销毁,同时决定不再需要您的第一个RootViewController。您可以像这样处理转换;

if var topRootController = UIApplication.sharedApplication().keyWindow?.rootViewController {
    while (topRootController.presentedViewController != nil) {
        topRootController = topRootController.presentedViewController!
    }
    topRootController.presentViewController(homeController, animated: true, completion: nil)
}