2014-03-03 110 views
1

我想在我的UITableViewController里面的屏幕底部添加一个固定的GADBannerView(Google Mobile Ads):我找到了关于如何将它合并到节标题的教程,页脚,单元格等等,但我希望横幅即使用户滚动也是固定的。正如您可能知道的那样,您不能直接调整放置在UITableViewController中的UITableView的大小。GADBannerView固定在UITableViewController的屏幕底部

除了以不同的方式重新创建ViewController之外,还有吗? 也许把它放在工具栏上可以解决问题吗?任何人使用这种方法?

谢谢!

回答

10

我解决了以下(良我的意见)的解决方案:

[self.navigationController setToolbarHidden:NO]; 
self.banner = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner]; 
self.banner.adUnitID = @"ca-app-pub-XXXXXXXX/XXXXXXXXX"; 
self.banner.rootViewController = self; 
[self.navigationController.toolbar addSubview:self.banner]; 

GADRequest *request; 
request.testDevices = @[GAD_SIMULATOR_ID]; 
[self.banner loadRequest:request]; 
  1. 确保工具栏可见
  2. 将GADBannerView添加到工具栏。
2

几个星期前,我在我的应用程序中添加了admob(除了iAd),但也许这会帮助你。

我用这个代码把它放在我的UITableViewController:

// defining the BannerView 
self.bannerView_ = [[GADBannerView alloc] 
       initWithFrame:CGRectMake(0.0, 
             self.view.frame.size.height - 
             GAD_SIZE_320x50.height, 
             GAD_SIZE_320x50.width, 
             GAD_SIZE_320x50.height)]; 

// Specify the ad unit ID. 
self.bannerView_.adUnitID = @"xxxxxxxxxxxxxxxxxxxxx"; 

// Let the runtime know which UIViewController to restore after taking 
// the user wherever the ad goes and add it to the view hierarchy. 
self.bannerView_.rootViewController = self; 
[self.view addSubview:self.bannerView_]; 

和滚动,当我使用这种方式来保持它的位置:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    CGRect iAdFrame = self.iAdBannerView.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); 
    self.iAdBannerView.frame = newIAdFrame; 
    self.bannerView_.frame = newIAdFrame; 
} 
1

用tableview作为@VaaChar提出的横幅视图滚动建议绝对不建议考虑性能。

我解决了同样的问题,将UITableViewController转换为UIViewController,并将tableview作为子视图添加到此视图控制器的视图中。而不是将标题添加到tableview,您可以将它添加到您的视图并根据横幅的高度。

由于旗帜出现了一些延迟,以保持在全尺寸表视图,直到横幅上我改变的tableview的高度委托方法

- (void)adViewDidReceiveAd:(GADBannerView *)view{ 

    if (!self.adRecieved) 
    { 
     CGRect currentRect = self.tableView.frame; 
     currentRect.size.height -= CGRectGetHeight(view.frame); 
     [self.tableView setFrame:currentRect]; 
     self.adRecieved = YES; 
    } 

}

自方法被称为多次刷新self.adRecieved是一个布尔变量来跟踪第一次更新。