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

时间:2014-10-24 14:57:13

标签: ios objective-c xcode auto-rotation ios8.1

我正在编写一个视频处理应用程序,当ios 8.1问世时,它正准备将其提交到应用程序商店。我更新了我的iPhone以及XCode,一切都搞得一团糟。在我简单的单一视图控制器界面中,除了状态栏之外,没有任何东西可以旋转,状态栏也不会在横向模式下自动隐藏...

我认为这是因为我使用了已弃用的willAnimateRotationToInterfaceOrientation:对于我所拥有的少量自定义旋转操作,所以我实现了traitCollectionDidChange:和viewWillTransitionToSize:来改变规格。但是,在我的应用程序中永远不会调用viewWillTransitionToSize,并且traitCollectionDidChange:在启动时仅调用一次。设备根本没有告诉应用程序设备已旋转。

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

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

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

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

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

干杯!

1 个答案:

答案 0 :(得分:6)

分配UIWindow将是问题所在。

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

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

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

如果使用故事板,您也不需要设置窗口rootViewController

使用故事板时根本不需要它们,但在8.1之前,使用它们从未造成任何伤害。花了我2天的时间才弄明白这一点,所以希望它能帮助你和其他人。