如何将静态广告横幅添加到UITableViewController中?

时间:2013-09-10 20:21:39

标签: iphone ios objective-c uitableview

我希望在我的应用中添加AdMob横幅广告。我把它们放在每个屏幕的底部,它可以正常工作,但在UIViewControllers方面并不完全。

当我在UITableViewController上添加一个add时,它会从屏幕底部的正确位置开始,但是当我滚动它时,它随之移动。当我滚动表格时,我需要广告静态地停留在屏幕的底部。

这是我的代码:

- (void)displayGAD
{
    // The frame of the banner is initialized off screen.
    // If an ad loads then it will animate onto the screen.
    self.bannerView = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0,
                                                                      self.view.frame.size.height,
                                                                      GAD_SIZE_320x50.width,
                                                                      GAD_SIZE_320x50.height)];

    self.bannerView.adUnitID = self.adUnitID;
    self.bannerView.delegate = self;
    self.bannerView.rootViewController = self;

    [self.view addSubview:self.bannerView];

    [self.bannerView loadRequest:[self createRequest]];

}



- (GADRequest *)createRequest
{
    GADRequest *request = [GADRequest request];

#warning Comment this out before distribution
    request.testDevices = [NSArray arrayWithObjects:@"84ea3d9789cabb0a34176cbb52c0f992", @"abf08fe141b95987d27ac068602605b8", GAD_SIMULATOR_ID, nil];

    return request;
}



- (void)adViewDidReceiveAd:(GADBannerView *)view
{
    NSLog(@"Received Ad");

    [UIView animateWithDuration:1.0 animations:^ {
        view.frame = CGRectMake(0.0,
                                self.view.frame.size.height - view.frame.size.height,
                                view.frame.size.width,
                                view.frame.size.height);
    }];
}

- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error
{
    NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]);
}

我已经看到了关于如何将广告嵌入到表格视图中的多个示例,但没有关于我想要如何实现它的具体内容。关于这一点,我唯一看到的是我应该将表视图放入容器视图中,然后将广告添加到容器视图中。我不知道我会怎么做,因为这是一个UITableViewController。

1 个答案:

答案 0 :(得分:4)

我发现实现这一目标的最简单方法是不使用专用的UITableViewController。我创建了一个UIViewController并在视图中添加了一个容器控制器。从那里我将容器控制器子类化为UITableViewController。我只是将所有与表视图相关的代码放在该子类中。然后,我将广告的加载和放置放在顶级UIViewController中。这样做意味着广告嵌入到与容器控制器相同的视图中。我刚刚制作它,以便我的广告横幅位于容器的顶部。这导致我能够使用表格视图滚动并且广告横幅不移动。