我不得不对 NJones 发布的解决方案进行一些更改,因为存在广告没有显示在所有其他单元格/视图之上的问题。
首先确保您的 tableViewController 是 AdBannerViewDelegate:
@interface MyTableViewController () <ADBannerViewDelegate>
将 AdBanner 添加到 tableviewcontroller:
- (void)viewDidLoad {
[super viewDidLoad];
...
ADBannerView *adBanner = [[ADBannerView alloc]initWithAdType:ADAdTypeBanner];
adBanner.delegate = self;
self.tableView.tableFooterView = adBanner;
}
定位广告横幅的代码取自 NJones,我只添加了最后一行以将广告横幅放在前面:
-(void)positionAdBanner {
ADBannerView *adBanner = (ADBannerView *) self.tableView.tableFooterView;
if (adBanner) {
CGRect iAdFrame = adBanner.frame;
CGFloat newOriginY = self.tableView.contentOffset.y + self.tableView.frame.size.height - iAdFrame.size.height;
CGRect newIAdFrame = CGRectMake(iAdFrame.origin.x, newOriginY, iAdFrame.size.width, iAdFrame.size.height);
adBanner.frame = newIAdFrame;
[self.tableView bringSubviewToFront:adBanner];
}
}
每当视图要布局其子视图时都会调用此函数(因此您只需要在此处使用它,无需检查滚动等):
-(void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
[self positionAdBanner];
}
您还应该处理 ADBannerViewDelegate 方法:
-(void)bannerViewDidLoadAd:(ADBannerView *)banner
{
banner.hidden = NO;
[self positionAdBanner];
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
banner.hidden = YES;
}