返回错误布局后,单击adob

时间:2012-05-16 03:34:39

标签: iphone ios cocos2d-iphone admob

我使用cocos2d结合AdMob,nomarl我的应用程序工作很棒,但是在点击广告并返回游戏后,布局错误,我的游戏就是风景!

AdMob参与后事情发生了变化。 AdMob有一个AD类型的“电影”。点击广告后,它会弹出全屏模式,播放电影,然后返回游戏。游戏改变,最初是横向模式,从广告回来后,它似乎是纵向模式,游戏缩放,一切看起来都很糟糕。我尝试在从广告返回后更新视图控制器/ 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];

1 个答案:

答案 0 :(得分:0)

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

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

从某些广告返回时会导致布局问题。我现在在我的应用程序中所做的是:

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

其中[RootViewController sharedInstance]是一个类方法,它返回应用程序中唯一的RootViewController实例。有关详细信息,请参阅我对其他问题的回答:https://stackoverflow.com/a/10222956/1241690

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

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