adWhirl的actualadsize方法不会返回正确的信息

时间:2012-01-30 01:33:45

标签: ios adwhirl

我正在测试:

  CGSize adSize = [adWhirlView actualAdSize];
NSLog(@"ad size received: %f x %f",adSize.width, adSize.height);

但是,无论广告的实际外观如何,返回的宽度始终是设备方向的宽度。这主要是adMob的一个问题,因为它的广告可能比设备的宽度小得多,因此显示为向左齐平而不是居中,即使上面返回的adsize实际上显示广告应该是全宽。

其他人遇到过此问题,并建议如何处理它?如果您不知道广告的实际宽度,则无法将其正确居中。

2 个答案:

答案 0 :(得分:1)

问题出在AdMob适配器中:

  // Set the frame for this view to match the bounds of the parent adWhirlView.
  GADBannerView *view =
  [[GADBannerView alloc] initWithFrame:adWhirlView.bounds];

这是一个非常糟糕的实现,因为AdWhirl缺少可选的委托方法。虽然这很容易解决。简单地使用其中一个AdMobs横幅尺寸,一切都会有效:

  GADBannerView *view =
  //[[GADBannerView alloc] initWithFrame:adWhirlView.bounds];
[[GADBannerView alloc] initWithFrame:CGRectMake(0, 0, GAD_SIZE_468x60.width, GAD_SIZE_468x60.height)];

您可能也希望修复颜色。关于颜色有两个错误:

  • AdMob适配器确实使用了正确的委托方法(adWhirlAdBackgroundColor,adWhirlTextColor)。虽然,他只是使用文本的背景颜色。
  • 如果未实施颜色委托方法,则AdMob适配器不会回退到您在配置中定义的颜色。

要解决此问题,只需找到与颜色相关的代码(位于getAd()的开头)并将其替换为:

  if ((value = [self delegateValueForSelector:
                      @selector(adWhirlAdBackgroundColor)])) {
    [additional setObject:[self hexStringFromUIColor:(UIColor *)value]
                  forKey:@"color_bg"];
  } else {
    [additional setObject:[self hexStringFromUIColor:adWhirlConfig.backgroundColor]
                     forKey:@"color_bg"];
  }

  if ((value = [self delegateValueForSelector:
                      @selector(adWhirlTextColor)])) {
    [additional setObject:[self hexStringFromUIColor:(UIColor *)value]
                   forKey:@"color_text"];
  } else {
    [additional setObject:[self hexStringFromUIColor:adWhirlConfig.textColor]
                     forKey:@"color_text"];
  }

答案 1 :(得分:0)

我有同样的问题。 我和iAd& amp;已启用AdMob广告,我这样做: ........

CGSize adSize = [adWhirlView actualAdSize];
 ......
if (adSize.height==50){
 // this is AdMob ad, change x position

 } else {
 // iAd ad, leave by default
 }