我想在我的应用程序中使用kobold2d库包含除了UIKit GUI元素之外的cocos2d场景,所以它应该只占用屏幕的一部分。
初始化第一层时,我改变了cocos2d glview大小:
UIView * glView = [[CCDirector sharedDirector]view];
CGRect rct = CGRectMake(100, 100, 300, 400);
[glView setFrame:rct];
视图显示正确,直到我改变方向,然后glview再次变为全屏。有没有办法禁用这种行为?
XCode 4.5.2,iOS 6,Kobold2D 2.04
答案 0 :(得分:0)
设置框架后调用整形可能会有所帮助:
UIView * glView = [[CCDirector sharedDirector]view];
CGRect rct = CGRectMake(100, 100, 300, 400);
[glView setFrame:rct];
[glView reshape];
答案 1 :(得分:0)
经过一些实验后,我找到了解决办法,如果我错了,请纠正我。至少这对我有用,希望其他人也能使用它。
CCDirectorIOS是一个UIViewController,它通常被设置为app rootViewController
的{{1}}。
看起来window
负责在每次方向更改时使其[window rootViewController]
全屏,从而迫使所有孩子进行布局(我知道!!!%)。
因此,为了避免glView不时缩小到整个窗口,给窗口另一个UIViewController作为rootController,而不是CCDirector。另一个UIViewController应该拥有它自己的全新UIView。这个新的rootView就是这个rootViewController可以根据需要调整大小,单独留下我们的glView。现在,将director指定为rootController的子节点,并将glView指定为rootView的子节点。
将glView设置为您想要的尺寸 - 然后关闭我们!现在当rootView调整大小时,glView不会。在我的情况下,它仍然必须调整大小,同时保持可用空间比例,所以我使用setAutoresizingMask。请大师告诉你的想法。
已知警告:
除了正确的初始方向外,没有使用KKAppDelegate的rootController和navController
由于addChildViewController:方法
app appDelegate中的代码(假设ARC为ON):
view