iOs6でアプリが回転しなくなった時の解決策

xcodeを4.5にバージョンアップした時に、アプリを立ち上げた際に画面の方向が上手くいかなくなりましたので、その解消方法を探しました。

2013 1 28 7766

環境

cocos2d1.x, xocde4.5 iOs6

解決策

今まで、アプリの画面の向きに関しては、以下の様なコードをAppDelegate.mに書いていました。 [c]

[window addSubview: viewController.view];

[/c]

変更点は、この部分を以下のように変えます。 iOs6になるとさらなるコードが必要になるのです。 [c] //ios6 //[window addSubview: viewController.view];//これを削除

NSString reqsysver = @"6.0"; NSString currentsysver = [[UIDevice currentDevice] systemVersion];

if ([currentsysver compare:reqsysver options:NSNumericSearch] != NSOrderedAscending) {

 [window setRootViewController:viewController];

}else{

 [window addSubview:viewController.view];

}

[/c]

iOsの種類にによってwindowに何を割り当てているかをif文で変えています。 rootviewcontrollerにビューコントローラを当ててあげる必要があるみたいです。

そしてRootViewController.m内にもコードを足して上げます。 [c]

ifdef __IPHONE_OS_VERSION_MAX_ALLOWED

if __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000

-(NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscape; }

  • (BOOL)shouldAutorotate { return YES; }

endif

endif

[/c]

これで今まで通りのアプリの回転がiOs6上でも行われるでしょう。

注記

なお、今回の問題はcocos2d1.xでのみ発生するみたいです。 cocos2d2.xにはすでにコードが修正されているのでしょう。cocos2d1.xを使っている人に関してはぜひ参考にしてみてください。

[参考サイト] orientation problem with iOS6 and cocos2d v1.0.0 « cocos2d for iPhone Landscape mode iOS6.0 - Doesn't work! « cocos2d for iPhone