如果应用程序以 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 上错误地旋转的主要内容,如果未能解决你的问题,请参考以下文章
支持iPhone 6和iPhone 6+,具有不同的启动/启动屏幕图像,适用于iPad纵向和横向方向