我使用了这些问题中的以下代码来禁用旋转动画。它适用于iPhone设备,但不适用于iPad。
所讨论的视图控制器是以模态方式呈现的导航控制器的根视图控制器。
有谁知道为什么以下方法适用于iPhone而不是iPad?
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: nil) { _ in UIView.setAnimationsEnabled(true) }
UIView.setAnimationsEnabled(false)
super.viewWillTransition(to: size, with: coordinator)
}
堆栈溢出问题
禁用方向更改旋转动画
在 7.3/9/2+ Swift 中,当设备旋转时如何禁用旋转动画?
从我的测试来看,您似乎可以禁用iPhone的旋转动画,但是当涉及到iPad时,动画由系统处理,并且无法与之交互。
因此,我得出的结论是,鉴于当前的公共 api,您无法禁用 iPad 上的旋转动画。
它无法工作,因为屏幕大小在iPad旋转时没有改变(或变化不大(。一旦我关闭了一个屏幕的纵向方向,我就遇到了这种方法的问题。我的解决方法是通过观察通知来捕获设备方向。但在这种情况下,您将只有"确实旋转"状态。