Objective C 应用在 iOS 16 上的 [UIScreen mainScreen].bounds 值错误

3

设备:物理 iPhone X(16.0.2)

我的客户的一款遗留应用程序(Objective C)在 iOS 15 上运行良好。 然而,在 iOS 16 上,该应用程序突然“高度缩小”。 应用程序像往常一样打开,但在屏幕顶部和底部有黑色条纹,因为应用程序本身似乎被限制在某个大小。

经过一些调查,我发现设备实际上将其屏幕高度报告为 480pt(iPhone X)。 强制 UIWindow 具有不同的大小无法解决此问题,应用程序仍然受到相同错误高度的限制。 设备似乎“实际上相信”自己比实际更短。

由于这种行为有点类似于在 iPad 上启动 iPhone 应用程序时发生的情况(至少我记得之前看到过这样的情况),我想知道这种行为是否符合 iOS 16 的预期?

如果不是,我真的很感激这里的帮助。

编辑:我了解到 +[UIScreen mainScreen] 在 iOS 16 中已弃用,因此使用它来初始化窗口可能是问题所在。 尽管在 AppDelegate 中似乎没有访问此信息的替代方法。 建议使用 self.view.window.windowScene.screen 来读取设备的屏幕大小,但可惜在 AppDelegate 中无法访问此信息。


这个应用程序使用Launchscreen.storyboard吗? - Subheesh P
不,此应用程序未使用任何故事板。 - Medwe
1个回答

0

解决方法:

我无法找到问题的根本原因,但是通过使用故事板来加载初始视图控制器,我可以解决它。这会导致系统自动创建一个窗口,不受此奇怪的系统行为影响。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接