如果应用程序以 iPhone 横向启动,iOS 13 应用程序窗口会在 iPhone 上错误地旋转

Posted

技术标签:

【中文标题】如果应用程序以 iPhone 横向启动,iOS 13 应用程序窗口会在 iPhone 上错误地旋转【英文标题】:iOS 13 Application window is wrongly rotated on iPhone if app is started with iPhone in landscape orientation 【发布时间】:2020-04-08 12:55:41 【问题描述】:

我正在为 ios 13 (Xcode 11.4) 升级一个已有 10 年历史的 iOS 应用程序 (Objective-C),并注意到以下奇怪的问题:当应用程序在 iPhone (Simulator, 13.4) 运行时启动时在横向,应用程序的窗口具有正确的尺寸,但奇怪地向右旋转了 90 度。这不会在应用程序正确启动的 iPad(模拟器,13.4)或 iPhone 模拟器 12.x 上发生。 附上截图以更好地说明问题。 该应用程序使用 XIB 和以编程方式创建的视图,没有情节提要。 初始视图以通常的方式在application didFinishLaunchingWithOptions 中创建:

[self.window addSubview:tabBarController.view];
self.window.rootViewController = tabBarController;
[self.window makeKeyAndVisible];

tabBarController 是从 XIB 加载的。

启动屏幕(这是应用程序中唯一的故事板)正确显示。

有什么想法吗?

【问题讨论】:

【参考方案1】:

原来删除线

[self.window addSubview:tabBarController.view];

application didFinishLaunchingWithOptions 成功了。显然这条线曾经需要过,但现在造成了严重破坏。

删除该行还修复了我在日志输出中看到的Unbalanced calls to begin/end appearance transitions for <UITabBarController: ...> 消息。

另请参阅 Apple 开发者论坛中的 this answer,这让我走上了正轨。

【讨论】:

以上是关于如果应用程序以 iPhone 横向启动,iOS 13 应用程序窗口会在 iPhone 上错误地旋转的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 和 Monogame 的方向错误?

iPhone应用程序的横向启动画面?

支持iPhone 6和iPhone 6+,具有不同的启动/启动屏幕图像,适用于iPad纵向和横向方向

iOS iPhone LaunchImage Landscape

横向模式下的 iPhone MPMoviePlayer

Xcode 5 在横向模式下不会显示 iPhone 的启动图像