Ios SizeClasses+AutoLayout在模拟器中完美工作,但在设备上却不能?

Ios SizeClasses+AutoLayout在模拟器中完美工作,但在设备上却不能?,ios,objective-c,iphone,autolayout,size-classes,Ios,Objective C,Iphone,Autolayout,Size Classes,我创建了一个简单的单视图应用程序,当设备旋转到一个新方向时,该应用程序旨在调整/重新排列其布局。我正在使用大小类和自动布局 在所有测试设备上的xcode模拟器ios8中,布局都会正确更改,但当我尝试在手机上运行它时,视图会正确地显示在纵向视图中,但不会旋转到横向视图 状态bartime,信号电池旋转离开屏幕,但视图完全不移动。这可能是什么原因造成的?该设备是iPhone5、ios 8.1 我很高兴发布任何你想看到的代码,请让我知道什么是相关的 谢谢大家! 编辑:好的,我刚刚将xcode从6.01

我创建了一个简单的单视图应用程序,当设备旋转到一个新方向时,该应用程序旨在调整/重新排列其布局。我正在使用大小类和自动布局

在所有测试设备上的xcode模拟器ios8中,布局都会正确更改,但当我尝试在手机上运行它时,视图会正确地显示在纵向视图中,但不会旋转到横向视图

状态bartime,信号电池旋转离开屏幕,但视图完全不移动。这可能是什么原因造成的?该设备是iPhone5、ios 8.1

我很高兴发布任何你想看到的代码,请让我知道什么是相关的

谢谢大家!

编辑:好的,我刚刚将xcode从6.01升级到6.1,问题现在存在于simlator和设备中,所以我的代码设置一定有问题

以下是应用程序在interface builder预览中的外观

这是肖像中的应用程序

和景观


如您所见,状态栏会旋转,但应用程序主视图不会旋转。我的主视图是横幅视图的子视图,用于显示iad,如容器横幅演示中所示

好吧,多亏了这个答案,我才明白这一点:

出于某种原因,我想知道为什么如果有人有答案删除这行

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

从应用程序委托ApplicationIDFinishLaunching方法更正了问题…奇怪

您好,请添加来自模拟器和设备的屏幕截图。如果可能的话,请说明您是如何设置约束的。@iOS_DK谢谢您的回复,我添加了一些屏幕截图来显示问题。我想我一定没有正确处理旋转,因为我的主视图是广告横幅代理的子vc。如果需要,我也可以发布我的初始化和旋转处理代码。除非您有特殊需要,否则通常不需要创建窗口。如果你不知道你有那种需要,你就没有那种需要。这篇文章似乎从高层次概述了一些陷阱和/或创建额外UIWindow的目的@布莱顿,谢谢,很高兴知道。事实上,我只是在遵循苹果指南,我原以为它应该会起作用,因为我的做法与苹果在该示例项目中的做法完全相同,但我猜这种方式不再适用于最近的iOS更新。结果是,我一次做了太多事情,给出了部分不好的建议。如果你最终得到了多个窗口的东西是正确的,但当我研究你的评论时,我意识到我自己也有相同的窗口创建代码——它是模板代码,我经常看到它,我看不见它。您是否碰巧在didFinishLaunching中创建了两个UIWindow?尽管如此,为了不让自己看起来更傻,我还是放弃了…@BradBrighton:不,我没有创建两个窗口,但我确实有:self.view=[[UIView alloc]initWithFrame:[[UIScreen mainScreen]bounds];在横幅视图控制器中。我的appdelegate和banner容器与apple iAd演示项目中的完全相同。我接受了那个项目,并将代码添加到ViewController类中。这是我如此困惑的一个原因,它没有工作,但该项目是为ios6编写的,所以我猜这是ios8的一个问题