我正在编写视频处理应用程序的代码,并打算在ios 8.1推出时将其提交给应用程序商店。我更新了我的iPhone以及XCode,一切都变得一团糟。在我简单的单一viewcontroller界面中,除了状态栏外,什么也没有旋转,在状态模式下它也不会自动隐藏。
我发现这是因为我使用了不赞成使用的willAnimateRotationToInterfaceOrientation:来执行我的少量自定义旋转操作,因此我将traitCollectionDidChange:和viewWillTransitionToSize:实现为规格。但是,viewWillTransitionToSize从未在我的应用程序中调用,并且traitCollectionDidChange:在启动时仅被调用一次。设备只是没有告诉应用程序设备已旋转。
谷歌搜索后,我还尝试使用名称:UIDeviceOrientationDidChangeNotification。至少我的选择器确实需要那个选择器,但是我不知道如何手动处理所有旋转。
我的didFinishLaunching ...和viewDidLoad非常简单。分配UIWindow,情节提要,从此处设置我的viewcontroller,使其成为rootviewcontroller,makekeyandvisible。全部基于Apple的AVFoundation演示应用程序之一。然后在didload中添加了一些子视图和工具栏等,没有什么异常,显然它可以在8.0和8.0.2的各种设备以及7.1仿真器等上正常工作。在运行8.0的iPad上仍然可以完美运行。 2 ...我没有发布任何代码的原因是我100%确信那方面一切正确。
主要的怪异事情是我似乎找不到任何遇到此问题的人。控制台或其他任何地方都没有错误。
有谁知道这可能是什么原因?我不认为发布版本会带来如此大的差异,再一次,似乎没有其他人拥有这一点。可能是实际故事板文件中的问题/错误吗?
而且,主要来说,由于我可以通过UIDeviceOrientationDidChangeNotification获得轮播通知,因此如何手动处理所有轮播/调整大小的内容?我一直在寻找答案,但无济于事,目前没有时间花在这个项目上:(
干杯!
分配UIWindow将是问题。
首先,确保在情节提要中将导航控制器(或您使用的任何控制器)设置为“ Initial View Controller”。
其次,在您的AppDelegate.m文件中,删除对应用程序didFinishLaunchingWithOptions中出现的对UIWindow和rootViewController的任何引用。就我而言,删除以下两行可解决我的问题。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window makeKeyAndVisible];
rootViewController
如果使用情节提要板,也不需要设置窗口的大小。
使用情节提要板时根本不需要它们,但是直到8.1版使用它们都没有任何危害。我花了2天的时间弄清楚了这一点,因此希望对您和其他人也有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句