iOS 8 – 以横向模式启动应用程序

我的iPad应用程序支持所有的方向,它也在iOS 7中运行良好。

但是,在iOS 8中 ,以横向模式启动应用程序使我的login视图在纵向框架内绘制横向视图。

在做了一些分析之后,我发现应用程序窗口在Landscape中启动时没有采取正确的方向。 之后做旋转更正了用户界面,因为它从那个点开始采取了正确的方向。

有人能够引导我通过这个? 提前致谢。

这个问题似乎是你设置窗口时的调用顺序。 在分配makeKeyAndVisible之前,您需要调用rootViewController 。 以下工作:

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

但是,如果您将订单更改为:

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

你得到你正在经历的行为。

感谢Dave Kammeyer解决这个烦人的iOS8错误的解决方法。

如果您正在使用故事板,则无法访问makeKeyAndVisible因为在调用AppDelegate之前, UIApplication自动将所有内容连接在一起。 在这种情况下,我只是在application:didFinishLaunchingWithOptions:开始时重置rootViewController application:didFinishLaunchingWithOptions:

 UIViewController* rootViewController = self.window.rootViewController; self.window.rootViewController = nil; self.window.rootViewController = rootViewController; 

之后,应用程序开始没有错误的风景。

我有根视图控制器在XIB中设置,通过在我的导航控制器在MainWindow.xib,并导航ctlr的根视图控制器我的实际根视图控制器的类。 因此,它会自动find我的根视图控制器,实例化它,并将其挂钩到导航控制器,并将其挂接到窗口。

但是:显然这在游戏中还为时过早,而且在横向模式下启动时会造成麻烦。

所以我打破了窗口的连接到xib中的根视图控制器(作为导航控制器),并自己设置根视图控制器:

 self.window.rootViewController = self.navigationController; 

效果与笔尖中的连接相同,但在稍后的时间发生,现在可以。

下面的代码为我工作

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { application.statusBarOrientation = UIInterfaceOrientationPortrait; // the rest of the method } 

希望它会帮助!