項目因爲一些原因必須要使用Cocos2D-iPhone,但是實際開發過程中發現cocos2D在和Uikit混合使用時會有很多問題。其中有兩個最爲難以忍受:cocos2D分辨率適配和Scene和View同時顯示時,View一定會顯示在Scene上面。
最近爲解決這兩個問題有了一點心得,記錄下…….
大致思路:因爲cocos2D本身也是建立在一個viewController上,所以在使用cocos2D的時候,將其當做一個普通的viewController進行push/pop;因爲cocos2D頁面切換的效果沒有原生的效果好,且cocos2D做分辨率適配確實麻煩(後續再記錄一篇cocos2D分辨率適配的坑吧),所以工程裏主要用Uikit,只有在不得已的地方纔使用cocos2D。
主要步驟:
1 .打開高清模式,以便適配不同分辨率
2 . 在CCAppDelegate.h中定義一個導航欄,目的是便於其他地方進行訪問
@property (nonatomic, readonly) CCNavigationController *navController;
注意:
如果加載的第一個頁面希望是cocos2D的頁面,這樣即可;但是如果是需要加載的是Uikit頁面,則在初期化navController的時候,需要將其RootView設置爲Uikit頁面。做法如下:
a.在CCAppDelegate.h中定義一個viewController:
@property (nonatomic, strong) IBOutlet UIViewController *rootVC;
b.在初期化navController的時候,修改RootView
navController_ = [[CCNavigationController alloc] initWithRootViewController:director];
修改爲:
rootVC_ = [[[NSBundle mainBundle]loadNibNamed:@"RootVC" owner:self options:nil] lastObject];
navController_ = [[CCNavigationController alloc] initWithRootViewController:rootVC_];
3.之後就將Cocos2D當成一個普通的ViewController使用即可:
在需要顯示Cocos2D的時候:
AppController *controller = (AppController *)[UIApplication sharedApplication].delegate;
[controller.navController pushViewController:[CCDirector sharedDirector] animated:YES];