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 }
希望它会帮助!