与 8.0.2 相比,是什么导致了 8.1 中自动旋转的巨大变化?



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

我想这是因为我使用了不推荐使用的willAnimateRotationToInterfaceOrientation:来进行一些小的自定义旋转操作,所以我实现了traitCollectionDidChange:并改为查看WillTransitionToSize:到规范。然而,viewWillTransitionToSize在我的应用程序中从未被调用,traitCollectionDidChange:在启动时只被调用一次。设备只是没有告诉应用程序设备已经旋转。

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

我的didFinishLaunching。。。和viewDidLoad非常简单。alloc UIWindow,storyboard,从那里设置我的viewcontroller,使其rootviewcontroller、makekey和visible。所有这些都基于苹果的一款AVFoundation演示应用程序。然后在didload中,我添加了一些子视图和工具栏等,没有什么特别的,很明显,它在8.0和8.0.2上的各种设备以及7.1模拟器上都能工作。在我的iPad上,8.0.2仍然运行得很完美……我没有发布任何代码的原因是,我100%确信这方面的一切都是正确的。

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

有人知道是什么原因造成的吗?我不认为一个积分发布会产生如此巨大的差异,再说一遍,似乎没有其他人会有这种情况。这可能是实际故事板文件中的问题/错误吗?

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

干杯!

分配UIWindow将是个问题。

首先,确保你的导航控制器(或你正在使用的任何控制器)在故事板中设置为"初始视图控制器"。

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

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

如果使用序列图像板,也不需要设置窗口的rootViewController

使用故事板时根本不需要它们,但在8.1之前,使用它们从未造成任何危害。我花了两天时间才弄清楚,所以希望它也能帮助你和其他人。

最新更新