2014-03-03 140 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是一個布爾變量來跟蹤第一次更新。