UITableView の下に ADBannerView を置くのは、無料+広告アプリでは定番レイアウト。 自分が作る iOS アプリでも採用している。
以前、
っていう記事を書いたけど、この方法はもう使っていない。 UITableView のフッターを設定しているので、表示データが 0 件だと行の区切り線が描画されない。 まっさら。 見た目が格好悪いので違う方法に切り替えた。
今採用している方法は超単純。 まず画面外に ADBannerView を置いておいて、広告の取得に成功したら画面下に移動して表示するだけ。
- (void)viewDidLoad { [super viewDidLoad]; CGRect frame = CGRectMake(0, self.view.frame.size.height, 0, 0); _bannerView = [[ADBannerView alloc] initWithFrame:frame]; _bannerView.delegate = self; [self.view addSubview:_bannerView]; } #pragma mark - ADBannerViewDelegate - (void)bannerViewDidLoadAd:(ADBannerView *)banner { CGFloat contentHeight = self.view.frame.size.height - banner.frame.size.height; self.tableView.frame = CGRectMake(0, 0, self.tableView.frame.size.width, contentHeight); banner.frame = CGRectMake(0, contentHeight, self.view.frame.size.width, banner.frame.size.height); banner.hidden = NO; } - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { self.tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); banner.frame = CGRectMake(0, self.view.frame.size.height, banner.frame.size.width, banner.frame.size.height); banner.hidden = YES; }
アプリを作るたびに毎回同じコードを書きたくないので、 広告の配置をコントロールするライブラリを自作して使いまわしている。
iAD のみ対応。 広告の表示位置は画面下部だけ。 自分が使う最小限の機能だけを実装している。 AdMob 対応や広告の表示位置変更は、必要になったらそのとき実装するかも。
2016/10/27 追記
Apple が iAd から撤退するのでライブラリの公開はやめた。