我想在我的UITableViewController内部的屏幕底部添加一个固定的GADBannerView(Google移动广告):我已经找到了如何将它合并到部分页眉,页脚,单元格等的教程..但我想要即使用户滚动也要修复横幅。您可能知道,您无法直接调整放置在UITableViewController中的UITableView。
除了以不同的方式重新创建ViewController之外还有吗? 将它放在工具栏中可以解决问题吗?有人用过这种方法吗?
谢谢!
答案 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)
几周前我在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是一个布尔变量来跟踪第一次更新。