iOS 应用程序未检测到设备方向更改

iOS App Does Not Detect Device Orientation Change

我的应用中出现方向更改问题。我的应用程序支持 Portrait、LandscapeLeft 和 LandscapeRight 设备方向,我 100% 确定我在 Info.plist 中正确配置了它。当我 运行 我的应用程序在我的 iPhone/Simulator 上旋转设备时,我的应用程序 ViewControllers 的 none 响应旋转。也就是说,无论我多么努力和疯狂地旋转 phone,都无法将 ViewController 更改为横向模式。我试图将 'Autorotate' var 覆盖为 return true/false,同样的结果,我的应用程序坚持单人像模式,这不是我想要的。所以我在想也许我的应用程序甚至无法检测到设备方向更改;因此,我将以下代码放在我的 AppDelegate 中,我是对的,当我旋转 phone 时永远不会调用 func "deviceOrientationDidChange",但是当应用程序进入后台时会调用它。有人有任何线索吗?几天来我一直在为此苦苦挣扎,并试图从互联网上找到解决方案,但没有希望。请帮忙

UIDevice.current.beginGeneratingDeviceOrientationNotifications()
let notifiCenter = NotificationCenter.default
notifiCenter.addObserver(self, selector: #selector(self.deviceOrientationDidChange(_:)), name: .UIDeviceOrientationDidChange, object: nil)

func deviceOrientationDidChange(_ notification: Notification) {
    print("device orientation did change...")
}

我不知道你想达到什么目的,但通常使用:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) // Do more stuff }

应该足以在旋转发生变化时捕获回调,因为视图大小也会发生变化。

我仍然无法弄清楚真正的原因是什么,但是在我对应用程序中使用的所有 pod 框架进行 Pod 更新后,这个问题确实得到了解决。我真的很努力地试图找出导致这个问题的原因。不幸的是,我做不到。我通过 pod 安装了大约 20 个第三方框架。我对这个问题的修复是 Pod 更新。没有运气的原因是什么。希望这个回答对以后的人有所帮助。