我使用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宽。
答案 0 :(得分: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;
}