iOS-重新启动应用程序更改方向?

时间:2019-12-05 07:26:16

标签: ios

在iOS上,是否可以在设备方向更改时自动重新启动应用程序? Android具有此功能(只需确保android:configChanges不包含方向)即可。

1 个答案:

答案 0 :(得分:3)

iOS中没有可用的方法来重新启动您的应用程序,但是您可以在方向更改时手动重新初始化初始根UIViewController


要重新实例化根UIViewController,可以在AppDelegate类中使用以下 static 函数:

static func getWindow() -> UIWindow? {
    return UIApplication.shared.keyWindow
}

static func resetViewController() {
    let window = getWindow()

    let controller = ...  /// Instantiate your inital `UIViewController`

    window?.rootViewController = controller
    window?.makeKeyAndVisible()
}

要监听方向变化,请使用UIViewController中的以下方法:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    AppDelegate.resetViewController() /// "Restarts" application
}

虽然这是一种可行的方法,但我强烈建议您不要在方向改变发生时重新启动应用程序,而只是按照苹果的方式处理方向改变。