kobold2d在方向更改时禁用全屏

时间:2013-01-23 10:52:43

标签: cocos2d-iphone uikit kobold2d

我想在我的应用程序中使用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

2 个答案:

答案 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:方法

  • ,因此将最小的ios版本提升为5

app appDelegate中的代码(假设ARC为ON):

view