0

我使用 cocos2d 结合 AdMob ,正常我的应用程序运行良好,但点击广告并返回游戏后,布局错误,我的游戏是横向的!

涉及 AdMob 后情况会发生变化。AdMob 有一个广告类型“电影”。点击广告后,弹出全屏模式,播放电影,然后返回游戏。游戏变了,原来是横屏模式,从广告回来后好像是竖屏模式,而且游戏缩放了,一切都不好了。我试图CCDirector在从广告返回后更新视图控制器/,但它不起作用。

找到了一种解决方法:只需将设备旋转到对应的横向模式,一切都会恢复正常。

只是想知道是否有任何方法可以防止告诉客户手动旋转它?你以前遇到过这种情况吗?

_viewController = [[UIViewController alloc] init];
_viewController.view = [[CCDirector sharedDirector] openGLView];

_admobView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
_admobView.adUnitID = ADMOB_PUBLISHER_ID;
_admobView.delegate = self;

GADRequest *request = [GADRequest request];
request.testing = YES;

[_admobView setRootViewController:_viewController];
[_admobView loadRequest:request];

[_viewController.view addSubview:_admobView];
4

1 回答 1

0

我之前遇到过类似的问题,原因是我创建了一个新的UIViewController并将其设置rootViewController为 AdMob 视图 - 就像你正在做的那样:

_viewController = [[UIViewController alloc] init];
_viewController.view = [[CCDirector sharedDirector] openGLView];
...
[_admobView setRootViewController:_viewController];

这会导致从某种广告返回时出现布局问题。我现在在我的应用程序中所做的就像:

adMobView.rootViewController = [RootViewController sharedInstance];
[[[CCDirector sharedDirector] openGLView] addSubview:adMobView];

where[RootViewController sharedInstance]是一个类方法,它返回应用程序中的唯一实例RootViewController。详情请参考我对另一个问题的回答:https ://stackoverflow.com/a/10222956/1241690

(对于 cocos2d 2.x,第二行应该是:

[[[CCDirector sharedDirector] view] addSubview:adMobView];

)

于 2012-05-16T05:04:08.667 回答