3

我的应用程序以横向模式运行。我不支持纵向,并且在所有屏幕中,如果我将设备旋转到纵向,一切都如预期的那样是横向的。

我正在展示 iAd 横幅,它们看起来不错,它们会随着它们的超级视图一起旋转。横幅显示一切正常。

问题是,当我点击它们并打开实际广告时,整个应用程序的方向都被搞砸了。iAD 以纵向模式打开,其位置错误,偏移到屏幕的一半,并且与整个应用程序方向混淆,使其进入不受支持且外观怪异的纵向模式。

关于如何避免这种情况的任何想法?

一些应用细节:

  • iOS6
  • 仅横向模式
  • Cocos2d + UIKit 用于某些屏幕
  • iAds 的集成代码是标准的,如 iAds 编程指南中所述
  • 应用根视图控制器是一个简单的 UIViewController,没有导航控制器或类似的东西。
  • 它不使用自动布局。
4

3 回答 3

1

您需要将 AdBannerView 设置为仅显示横向广告:

adBannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierLandscape];
adBannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;

这样,不应加载不支持横向的广告。请注意,这将导致您的填充率下降。

于 2013-02-22T09:20:18.790 回答
1

我还在 Cocos2d-landscape 游戏中使用了 iAds。对我来说它的工作。

这是托管的文件:下载

-(void)showBannerView
{
    _adBannerViewIsVisible = true;
    AppController * myDelegate = (((AppController*) [UIApplication sharedApplication].delegate));
    [myDelegate.navController.view addSubview:self.adBannerView];

    if (self.adBannerView)
    {
        [UIView animateWithDuration:0.5
                              delay:0.1
                            options: UIViewAnimationCurveEaseOut
                         animations:^
         {
             CGSize s = [[CCDirector sharedDirector] winSize];

             CGRect frame = self.adBannerView.frame;
             frame.origin.y = s.height - frame.size.height;
             frame.origin.x = (s.width/2.0f - frame.size.width/2.0f);

             self.adBannerView.frame = frame;
         }
                         completion:^(BOOL finished)
         {
         }];
    }

}
于 2013-02-15T18:16:37.723 回答
0

好吧,这个问题把我搞砸了 2 天,我什至放弃了 iAd,直到我遇到了与 gamecenter 身份验证相同的问题,它总是以纵向打开并以相同的方式拧紧应用程序的整个方向。

然而,我几乎立即在谷歌搜索中找到了游戏中心的解决方案。我尝试对 iAd 应用相同的解决方案,并且效果很好。

主要思想是让您的应用程序以纵向和横向方式运行(在应用程序的信息列表中)

然后在您的视图控制器中将首选方向设置为横向右,允许方向旋转并支持横向和纵向。

详细答案在这里:

带有 CCLayer for iOS 6 的 Cocos2d 横向 Gamecenter 身份验证

特别感谢西尔万!

于 2015-04-20T12:23:56.157 回答