cocos2d-iphone 2.0で縦画面と横画面を切り替える方法

先の記事
http://d.hatena.ne.jp/DiegoTristan/20130102/1357135643
で、縦画面表示になってしまう理由が不明だと書きました。
その解答が見つかりました。
バージョンはcocos2d-iphone 2.0.0です。

結論から言うと、Info.plistのSupported Interface OrientationでPortraitにしてれば縦画面で表示されるし、Landscapeにしてれば横画面に表示されます。
(BOOL)shouldAutorotateToInterfaceOrientationメソッドは何も影響しません。
このメソッドは、起動時にも端末の回転時にも呼ばれないことをデバッガで確認しました。
調べていませんが、他の用途のためにあるのでしょう。


ここまでだと、何でわざわざこのような簡単なことではまり、わざわざ記事を書いたのかと疑問に思われるでしょうが、
答えは簡単で、
参考にした下記の書籍のサンプルソースで回転が有効になっていなかったからです。

Learn cocos2d 2: Game Development for iOS

Learn cocos2d 2: Game Development for iOS

おそらくcocos2d 2.0のベータバージョンか何かを元にしているのでしょうか、
AppDelegate.mのdidFinishLaunchingWithOptionメソッド内で
[window_ addSubView:navController_.view]としています。
これだと、必ず縦画面になってしまい、info.plistを編集しても変わりません。
(原因は未調査です。)

現在は、cocos2d 2.0のテンプレートでプロジェクトを作ると、
[window_ setRootViewController:navController_];
となっていますが、これでしたらOKです。

まあ、おそらくは単に、古いバージョンのソースを参考にしていてはまってしまったというだけですね。