iOS 8-以横向模式启动应用程序
我的iPad应用程序支持所有方向,在iOS 7中也运行良好 然而,在iOS 8中,以横向模式启动应用程序使我的登录视图在纵向框架内绘制横向视图 在做了一些分析之后,我发现应用程序窗口在横向启动时没有采取正确的方向。在此之后进行旋转会更正UI,因为它从该点开始具有正确的方向iOS 8-以横向模式启动应用程序,ios,ipad,ios8,orientation,xcode6,Ios,Ipad,Ios8,Orientation,Xcode6,我的iPad应用程序支持所有方向,在iOS 7中也运行良好 然而,在iOS 8中,以横向模式启动应用程序使我的登录视图在纵向框架内绘制横向视图 在做了一些分析之后,我发现应用程序窗口在横向启动时没有采取正确的方向。在此之后进行旋转会更正UI,因为它从该点开始具有正确的方向 有人能帮我解决这个问题吗?提前感谢。设置窗口时,问题似乎在于通话顺序。在分配rootViewController之前,需要调用makeKeyAndVisible。以下工作: self.window = [[UIWindow a
有人能帮我解决这个问题吗?提前感谢。设置窗口时,问题似乎在于通话顺序。在分配
rootViewController
之前,需要调用makeKeyAndVisible
。以下工作:
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];
您将获得您正在经历的行为。我在XIB中设置了根视图控制器,方法是在MainWindow.XIB中设置我的导航控制器,并且导航ctlr的根视图控制器是我实际根视图控制器的类。因此,它会自动找到我的根视图控制器,实例化它,并将它挂接到导航控制器,然后挂接到窗口 但是:显然,这在游戏中还为时过早,而且在以横向模式启动时会造成麻烦 因此,我断开了窗口与xib中根视图控制器(导航控制器)的连接,并自行设置根视图控制器:
self.window.rootViewController = self.navigationController;
效果与nib中的连接相同,但在以后的某个时间点发生的情况下,现在一切正常。以下代码适用于我
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
application.statusBarOrientation = UIInterfaceOrientationPortrait;
// the rest of the method
}
希望这会有帮助 感谢Dave Kammeyer为这个恼人的iOS8错误提供了解决方案 如果您使用的是故事板,您实际上无法访问
makeKeyAndVisible
,因为UIApplication
会在调用AppDelegate
之前自动将所有内容连接在一起。在这种情况下,我只需在应用程序:didFinishLaunchingWithOptions:
UIViewController* rootViewController = self.window.rootViewController;
self.window.rootViewController = nil;
self.window.rootViewController = rootViewController;
之后,应用程序将在无bug的环境中启动。感谢您的支持,我的应用程序也能正常运行。我在.xib中设置了rootViewController,自动设置了rootViewController,因此我不得不中断那里的连接。我认为这是苹果应该修复的一个bug。如果窗口是从xib派生的,该怎么办?嗯,这是一个好提示,不幸的是,在2016年iOS10等软件中它对我不起作用。糟糕。。。我所做的只是有一个空的“预加载”场景,它只是加载实际的第一个场景。