0

我正在使用 AdWhirl 在我的应用中显示 iAd 和 AdMob 广告。在 iPad 上,当处于横向时,我创建了一个 1024 宽的 AdWhirlView,但返回的第一个 iAd 始终是纵向宽度广告 (768)。如果我将 iPad 旋转为纵向,然后再转回横向,则广告会以 1024 宽的全横向正确显示。

为什么横向广告在不需要轮播的情况下无法开始展示?

- (void) setupAdWhirl {
    if (self.adWhirlView == nil) {
        CGFloat adWhirlHeight = 90.0;

        CGSize size = self.rootViewController.view.bounds.size;
        NSLog(@"rootVC.bounds=%@", NSStringFromCGRect(self.rootViewController.view.bounds));

        AdWhirlView *adWhirl = [AdWhirlView requestAdWhirlViewWithDelegate:self];
        adWhirl.frame = CGRectMake(0, size.height - adWhirlHeight, size.width, adWhirlHeight);
        adWhirl.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;
        NSLog(@"adWhirl.frame=%@", NSStringFromCGRect(adWhirl.frame));

        [self.rootViewController.view addSubview:adWhirl];
        self.adWhirlView = adWhirl;
    }
}

这两个日志语句输出以下内容:

rootVC.bounds={{0, 0}, {1024, 748}}
adWhirl.frame={{0, 658}, {1024, 90}}

所以我最初在 adWhirlView 上设置的框架是 1024 宽和 90 高。但是,当它加载第一个 iAd 时,它会调整为 768 宽。

4

1 回答 1

0

我不知道是否有“正确”的方法来做到这一点,但我破解了 AdWhirl 源并设法让它按我的预期工作。

在iAd适配器中,-getAd方法,在创建完ADBannerView之后,我添加了如下代码:

  iAdView = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
  iAdView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

  // Added lines below

  if (self.adWhirlView.bounds.size.width > self.adWhirlView.bounds.size.height) {
      iAdView.currentContentSizeIdentifier = kADBannerContentSizeIdentifierLandscape;
  }
  else {
      iAdView.currentContentSizeIdentifier = kADBannerContentSizeIdentifierPortrait;
  }
于 2013-02-19T22:39:29.823 回答