Чтобы представить что-либо из Cocos2D поверх представления UIKit, вам нужно будет сделать представление Cocos2D прозрачным и ввести фиктивное представление.Вы не можете добиться этого эффекта с помощью z-порядка, поскольку это влияет только на узлы в представлении Cocos2D OpenGL.
Чтобы сделать представление Cocos2D прозрачным, необходимо изменить глубину цвета на 32 бита (RGBA8888) по умолчанию16-битный режим в инициализации EAGLView (делегат приложения).Затем настройте иерархию представлений с помощью фиктивного представления, чтобы вы могли фактически добавить представления UIKit в фоновом режиме и представление Cocos2D в качестве основного представления.
Основной подход заключается в том, чтобы сделать это в вашем делегате приложения методом didFinishLaunching:
UIView* dummyView = [[UIView alloc] initWithFrame:[window bounds]];
[dummyView autorelease];
[dummyView addSubview:[CCDirector sharedDirector].openGLView];
rootViewController.view = dummyView;
[window addSubview:rootViewController.view];
// make the cocos2d view transparent:
glClearColor(0.0, 0.0, 0.0, 0.0);
[[CCDirector sharedDirector] openGLView].opaque = NO;
С этого момента вы можете использовать dummyView для управления иерархией представления.Например, когда вы добавляете вашу игру поверх представления в dummyView, вы хотите вызвать sendToBack для него, чтобы он рисовался позади представления cocos2d.
Весь процесс со всеми необходимыми вещами подробно описан вmy Книга по разработке игр Cocos2D (2-е издание) .