无法正常游戏横屏
首先在你项目根目录找到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的情况!