0

我有一个带有动画启动画面和主界面的应用程序。

为了从闪屏过渡到主界面,我使用了以下代码:

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

但显然这种方法破坏了自转(我花了一段时间才找到那个)。现在我遇到的问题是这种自动旋转与动画无关。

我想这与动画无关,因为旧的视图控制器仍然位于另一个视图控制器下方,它只是转发新的方向。

如何在能够销毁旧视图控制器并保持旋转的同时正确地从一个视图控制器过渡到下一个视图控制器?

编辑:我注意到当我关闭我的应用程序时我的主屏幕会旋转(从它的启动方向到我关闭它时应用程序所处的方向)

4

2 回答 2

2

除了凯末尔所说的,我还发现了我的具体问题:

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

于 2017-03-27T13:19:16.630 回答
1

根据 UIWindow 文档;

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

源链接->这里

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

if var topRootController = UIApplication.sharedApplication().keyWindow?.rootViewController {
    while (topRootController.presentedViewController != nil) {
        topRootController = topRootController.presentedViewController!
    }
    topRootController.presentViewController(homeController, animated: true, completion: nil)
}
于 2016-09-21T13:34:10.073 回答