IOS6上cocos2d 1.0项目两个bug修复
IOS6下cocos2d 1.0项目两个bug修复
无法正常游戏横屏
首先在你项目根目录找到AppController.m 类,然后找到如下代码:
// Set RootViewController to window [window addSubview: viewController.view];
然后将其替换成如下代码:
// Set RootViewController to window if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) { // warning: addSubView doesn't work on iOS6 [window addSubview: viewController.view]; } else { // use this mehod on ios6 [window setRootViewController:viewController]; }
最后在项目根目录的RootViewController.m文件中添加如下两个函数:
- (NSUInteger) supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscape; } - (BOOL) shouldAutorotate { return YES; }
这样就可以了,其实就是判断一下机器的版本,使用不同的方法来解决!
GameCenter函数导致的崩溃
就是这个[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil];的问题,IOS 6之后变成了setAuthenticateHandler,解决代码如下:
NSString *reqSysVer = @"6.0"; NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending) { // Gamekit login for ios 6 [[GKLocalPlayer localPlayer] setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) { if (viewcontroller != nil) { AppDelegate* delegate = (AppDelegate*)[UIApplication sharedApplication].delegate; RootViewController* root = (RootViewController*)delegate.viewController; [root presentViewController:viewcontroller animated:YES completion:nil]; }else if ([GKLocalPlayer localPlayer].authenticated) { //do some stuff //成功处理 //切换用户时看是否要重新复制Plist文件 NSLog(@"成功"); NSLog(@"1--alias--.%@",[GKLocalPlayer localPlayer].alias); // NSLog(@"2--authenticated--.%d",[GKLocalPlayer localPlayer].authenticated); // NSLog(@"3--isFriend--.%d",[GKLocalPlayer localPlayer].isFriend); NSLog(@"4--playerID--.%@",[GKLocalPlayer localPlayer].playerID); NSLog(@"5--underage--.%d",[GKLocalPlayer localPlayer].underage); //tempPalyID=[GKLocalPlayer localPlayer].playerID; } })]; } else { // Gamekit login for ios 5 //[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil]; [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error){ if (error == nil) { //成功处理 //切换用户时看是否要重新复制Plist文件 NSLog(@"成功"); NSLog(@"1--alias--.%@",[GKLocalPlayer localPlayer].alias); // NSLog(@"2--authenticated--.%d",[GKLocalPlayer localPlayer].authenticated); // NSLog(@"3--isFriend--.%d",[GKLocalPlayer localPlayer].isFriend); NSLog(@"4--playerID--.%@",[GKLocalPlayer localPlayer].playerID); NSLog(@"5--underage--.%d",[GKLocalPlayer localPlayer].underage); //tempPalyID=[GKLocalPlayer localPlayer].playerID; }else { //错误处理 NSLog(@"失败 %@",error); } }]; }
注:以上是在Xcode4.5、IOS 6、cocos2d-iphone-1.0的情况!