iOS应用程序不会检测设备方向更改

时间:2017-04-19 15:32:17

标签: ios uideviceorientation

我的应用中的方向更改存在问题。我的应用程序支持Portrait,LandscapeLeft和LandscapeRight设备方向,我100%确定我在Info.plist中正确配置它。当我在我的iPhone /模拟器上运行我的应用程序并旋转设备时,我的应用程序ViewControllers都没有响应旋转。也就是说,无论我旋转手机多么辛苦和疯狂,都不能将ViewControllers更改为横向模式。我试图覆盖'Autorotate'var以返回true / false,同样的结果,我的应用程序坚持单个Portrait Mode,这不是我想要的。所以我想也许我的应用程序甚至无法检测到设备方向的变化;因此,我将以下代码放在我的AppDelegate中,我是对的,当我旋转手机时,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...")
}

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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