启animation面问题,Xcode / iOS 6 / Phonegap

所以,我在我的AppDelegate.m中有这个函数:

- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { [CDVLocalStorage __verifyAndFixDatabaseLocations]; NSURL* url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; if (url && [url isKindOfClass:[NSURL class]]) { invokeString = [url absoluteString]; NSLog(@"PHR launchOptions = %@", url); } CGRect screenBounds = [[UIScreen mainScreen] bounds]; self.window = [[UIWindow alloc] initWithFrame:screenBounds]; self.window.autoresizesSubviews = YES; self.detailViewController self.detailViewController = [[MainViewController alloc] init]; self.detailViewController.useSplashScreen = YES; self.detailViewController.wwwFolderName = @"www"; self.detailViewController.startPage = @"index.html"; self.detailViewController.invokeString = invokeString; NSString *deviceType = [UIDevice currentDevice].model; if (![deviceType hasPrefix:@"iPad"] && ![deviceType hasPrefix:@"iPad Simulator"]) { CGRect viewBounds = [[UIScreen mainScreen] applicationFrame]; detailViewController.view.frame = viewBounds; BOOL forceStartupRotation = YES; UIDeviceOrientation curDevOrientation = [[UIDevice currentDevice] orientation]; if (UIDeviceOrientationUnknown == curDevOrientation) { curDevOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation]; } if (UIDeviceOrientationIsValidInterfaceOrientation(curDevOrientation)) { if ([self.detailViewController supportsOrientation:curDevOrientation]) { forceStartupRotation = NO; } } if (forceStartupRotation) { UIInterfaceOrientation newOrient; if ([self.detailViewController supportsOrientation:UIInterfaceOrientationPortrait]) newOrient = UIInterfaceOrientationPortrait; else if ([self.detailViewController supportsOrientation:UIInterfaceOrientationLandscapeLeft]) newOrient = UIInterfaceOrientationLandscapeLeft; else if ([self.detailViewController supportsOrientation:UIInterfaceOrientationLandscapeRight]) newOrient = UIInterfaceOrientationLandscapeRight; else newOrient = UIInterfaceOrientationPortraitUpsideDown; NSLog(@"AppDelegate forcing status bar to: %d from: %d", newOrient, curDevOrientation); [[UIApplication sharedApplication] setStatusBarOrientation:newOrient]; } self.window.rootViewController = self.detailViewController; } else { NavViewController *leftViewController = [[NavViewController alloc] initWithNibName:@"NavViewController" bundle:nil]; UINavigationController *leftNavViewController = [[UINavigationController alloc] initWithRootViewController:leftViewController]; leftNavViewController.navigationBarHidden = YES; UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController]; detailNavigationController.navigationBarHidden = YES; leftViewController.detailViewController = detailViewController; self.splitViewController = [[UISplitViewController alloc] init]; self.splitViewController.viewControllers = [NSArray arrayWithObjects:leftNavViewController, detailNavigationController, nil]; self.window.rootViewController = self.splitViewController; self.splitViewController.delegate = detailViewController; detailViewController.svc = self.splitViewController; } [self.window makeKeyAndVisible]; return YES; } 

是的,我知道这是很多代码,但是我完全不确定要剪切什么,因为在这个函数里我不知道什么是错误的。

本质上,我的应用程序加载在横向模式下的iPad,但启animation面旋转90度,并显示肖像,而不是风景,然后闪回我的实际启animation面。 从代码中可以看出,它是在设备检查的else语句中触发的,除此之外,我可以真正使用你们的帮助来弄清楚我需要做些什么改变。

如果只在应用程序中使用横向模式,请将setStatusBarOrientation仅设置为横向模式。

 [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]; 

要么

 [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft]; 

所以,我最终设法解决了这个问题。 在“showSplashScreen”函数中,在Cordova文件中的CDVViewController.m中(你必须有2.0.0才能获得源代码),你必须注释掉这行: startupImageTransform = CGAffineTransformMakeRotation(degreesToRadian(90)); 在所有的if检查中,因为设备会为你做旋转,那么phonegap会尝试重新定位它。