iOS - 在方向改变时重新启动应用程序?

标签 ios

在 iOS 上,是否可以在设备方向改变时自动重新启动应用程序? Android 有这个功能(只要确保 android:configChanges 不包括方向)。

最佳答案

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
}

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

关于iOS - 在方向改变时重新启动应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59190165/

相关文章:

ios - 如何通过在 Spritekit 中触摸隐藏的 SKSpriteNode 来检测它们?

c# - 如何使用 C# 从 IOS 设备获取 IMEI

ios - Swift 4 - 使用 PromiseKit 调用嵌套

ios - 使用 Storyboard 设置 UITextView 的最大行数,如 UILabel?

objective-c - iOS:AutoresizingMask 使用数组?

ios - SKScene 随机返回主菜单

ios - 在 UITableView 中分页数据

ios - 使用委托(delegate)时弹出 ViewController

ios - 使用快速 channel 匹配时,配置文件 “match x” 不包括签名证书 “Apple Distribution: Company (ID)”

ios - 加载 ViewController 时出错 - 加载了 Nib ,但未设置 View 导出