4

我正在编写一个视频处理应用程序,并且正要在 ios 8.1 发布时将其提交到应用程序商店。我更新了我的 iPhone 和 XCode,一切都乱了套。在我简单的单视图控制器界面中,除了状态栏外,没有任何东西在旋转,在横向模式下也不会再自动隐藏...

我认为这是因为我使用了已弃用的 willAnimateRotationToInterfaceOrientation: 来处理我所拥有的一些小自定义旋转操作,所以我实施了 traitCollectionDidChange: 和 viewWillTransitionToSize: 来代替规范。但是 viewWillTransitionToSize 永远不会在我的应用程序中被调用,并且 traitCollectionDidChange: 在启动时只被调用一次。设备根本不会告诉应用程序设备已旋转。

谷歌搜索后,我也尝试使用名称:UIDeviceOrientationDidChangeNotification。至少我的选择器确实被调用了,但我不知道如何手动处理所有旋转。

我的 didFinishLaunching... 和 viewDidLoad 非常简单。分配 UIWindow,故事板,从那里设置我的视图控制器,使其成为 rootviewcontroller,makekeyandvisible。全部基于 Apple 的 AVFoundation 演示应用程序之一。然后在 didload 中,我添加了一些子视图和工具栏等,没有什么不寻常的,显然它确实适用于各种设备的 8.0 和 8.0.2 以及 7.1 模拟器等。仍然可以在我的 8.0 的 iPad 上完美运行。 2...我没有发布任何代码的原因是我 100% 确定一切都是正确的。

主要奇怪的是我似乎找不到任何有这个问题的人。控制台或其他地方也没有错误。

有谁知道可能导致这种情况的原因?我不认为点发布会产生如此巨大的差异,而且,似乎没有其他人有这个。这可能是实际故事板文件中的问题/错误吗?

而且,主要是因为我可以通过 UIDeviceOrientationDidChangeNotification 获得旋转通知,我如何手动处理所有旋转/调整大小的东西?我一直在寻找答案,但无济于事,目前没有时间花在这个项目上:(

干杯!

4

1 回答 1

6

分配 UIWindow 将是问题所在。

首先,确保您的导航控制器(或您正在使用的任何东西)在情节提要中设置为“初始视图控制器”。

其次,在您的 AppDelegate.m 文件中,删除应用程序 didFinishLaunchingWithOptions 中出现的对 UIWindow 和 rootViewController 的任何引用。就我而言,删除以下两行解决了我的问题。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window makeKeyAndVisible];

您也不需要设置窗口的rootViewController如果使用情节提要

使用情节提要时根本不需要它们,但在 8.1 之前使用它们从来没有任何危害。我花了 2 天的时间才弄清楚这一点,所以希望它也能帮助你和其他人。

于 2014-10-24T16:32:36.217 回答