iPadOS 13 上的屏幕旋转故障
Screen rotation glitch on iPadOS 13
我一直在处理 iPadOS 13.1.3 上与设备方向相关的 UI 故障。对此有任何解决方案或解决方法吗?
问题
描述
让屏幕 A 以模态方式显示屏幕 B。屏幕 A 仅锁定为纵向,屏幕 B 支持所有方向。如果显示屏幕 A,设备旋转到横向,然后屏幕 B 即将显示,屏幕 A 的大小首先被错误地调整,导致奇怪的故障。
图片
左边的图像是在 iPadOS 13.1.3 上拍摄的,它产生了 UI 故障。右边的图像记录在 iPad 上,安装了 iOS 12.4.1,布局正确。所有附加图像都是下面链接的 github 项目的一部分。
项目
请随时使用 this 存储库仔细查看此问题。
谢谢。
编辑:
故障不再发生在 iPadOS 13.2.
我是这样解决的:
删除 func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?)
的实现。让我们让视图控制器来处理这个。
在 VC1 中:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
.portrait
}
同时删除 "hacky solution".
在 VC2 中:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
.all
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
.portrait
}
所以我们得到的是 VC2 最初以纵向显示,但随后可以旋转。
如果你想让VC2出现后立即旋转成横屏,那么添加:
var appeared = false
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
appeared = true
UIViewController.attemptRotationToDeviceOrientation()
}
我一直在处理 iPadOS 13.1.3 上与设备方向相关的 UI 故障。对此有任何解决方案或解决方法吗?
问题
描述
让屏幕 A 以模态方式显示屏幕 B。屏幕 A 仅锁定为纵向,屏幕 B 支持所有方向。如果显示屏幕 A,设备旋转到横向,然后屏幕 B 即将显示,屏幕 A 的大小首先被错误地调整,导致奇怪的故障。
图片
左边的图像是在 iPadOS 13.1.3 上拍摄的,它产生了 UI 故障。右边的图像记录在 iPad 上,安装了 iOS 12.4.1,布局正确。所有附加图像都是下面链接的 github 项目的一部分。
项目
请随时使用 this 存储库仔细查看此问题。
谢谢。
编辑:
故障不再发生在 iPadOS 13.2.
我是这样解决的:
删除
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?)
的实现。让我们让视图控制器来处理这个。在 VC1 中:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask { .portrait }
同时删除 "hacky solution".
在 VC2 中:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask { .all } override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { .portrait }
所以我们得到的是 VC2 最初以纵向显示,但随后可以旋转。
如果你想让VC2出现后立即旋转成横屏,那么添加:
var appeared = false
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
appeared = true
UIViewController.attemptRotationToDeviceOrientation()
}