我一直在处理iPadOS 13.1.3上与设备方向有关的UI故障。有任何解决方案或解决方法吗?
说明
让我们让屏幕A模态显示屏幕B。屏幕A仅锁定为纵向,屏幕B支持所有方向。如果显示了屏幕A,则将设备旋转到横向,然后将要显示屏幕B,则屏幕A的尺寸首先会错误地调整大小,这将导致更严重的故障。
图片
左图是在产生UI故障的iPadOS 13.1.3上拍摄的。右图是在安装了iOS 12.4.1且布局正确的iPad上记录的。所有附带的图像都是下面链接的github项目的一部分。
项目
请随时使用this存储库对此问题进行详细了解。
谢谢。
编辑:
在iPadOS 13.2上不再出现故障。
答案 0 :(得分:0)
我像这样解决它:
删除func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?)
的实现。让我们让视图控制器来处理这个问题。
在VC1中:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
.portrait
}
还删除“ hacky解决方案”。
在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()
}