自iOS 16以来,Objective C应用程序的[UISscreen mainScreen].bounds值错误

mbzjlibv  于 2022-12-01  发布在  iOS
关注(0)|答案(1)|浏览(300)

设备:实体iPhone X(16.0.2)
我的客户端的一个旧版应用程序(Objective C)在iOS 15上运行得很好。但在iOS 16上,该应用程序突然“高度缩小”。该应用程序照常打开,但在屏幕的顶部和底部,有黑条,因为应用程序本身似乎被限制在一定的大小。
经过一番调查,我发现这款设备实际上报告的屏幕高度是480pt(iPhone X)。强迫UIWindow使用不同的尺寸并不能解决这个问题,应用程序仍然被限制在相同的错误高度。看起来这款设备“实际上认为”比实际要短。
由于这种行为有点类似于在iPad上启动iPhone应用程序时发生的情况(至少我记得不久前看到过类似的情况),我想知道这种行为是否是iOS 16所预期的?
如果没有的话,我真的会很感激你的帮助。
编辑:我了解到+[UISscreen mainScreen]在iOS 16中已经被弃用了,所以用它来初始化窗口可能会有问题。尽管似乎没有其他方法可以在AppDelegate中访问这些信息。有人建议使用self.view.window.windowScene.screen来读取设备的屏幕大小,但遗憾的是在AppDelegate中无法访问。

eanckbw9

eanckbw91#

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

相关问题