GADBannerView固定在UITableViewController的屏幕底部

时间:2014-03-03 15:41:31

标签: ios uitableview admob adsense

我想在我的UITableViewController内部的屏幕底部添加一个固定的GADBannerView(Google移动广告):我已经找到了如何将它合并到部分页眉,页脚,单元格等的教程..但我想要即使用户滚动也要修复横幅。您可能知道,您无法直接调整放置在UITableViewController中的UITableView。

除了以不同的方式重新创建ViewController之外还有吗? 将它放在工具栏中可以解决问题吗?有人用过这种方法吗?

谢谢!

3 个答案:

答案 0 :(得分: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添加到工具栏中。

答案 1 :(得分:2)

几周前我在app中添加了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;
}

答案 2 :(得分:1)

考虑到性能,绝对不建议使用@VaaChar建议的tableview滚动横幅视图。

我通过将UITableViewController转换为UIViewController并将tableview作为子视图添加到此视图控制器的视图来解决了同样的问题。而不是将横幅添加到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是一个布尔变量来跟踪第一次更新。