我正在测试:
CGSize adSize = [adWhirlView actualAdSize];
NSLog(@"ad size received: %f x %f",adSize.width, adSize.height);
但是,无论广告的实际外观如何,返回的宽度始终是设备方向的宽度。这主要是adMob的一个问题,因为它的广告可能比设备的宽度小得多,因此显示为向左齐平而不是居中,即使上面返回的adsize
实际上显示广告应该是全宽。
其他人遇到过此问题,并建议如何处理它?如果您不知道广告的实际宽度,则无法将其正确居中。
答案 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)];
您可能也希望修复颜色。关于颜色有两个错误:
要解决此问题,只需找到与颜色相关的代码(位于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
}