UITabBar (UITableView を表示する) の真上に ADBannerView を表示できるようにしたいと考えています。残念ながら、バナーが正しく配置されていません。UITableView のすぐ下に表示され、スクロールするとすぐにバナーが UITableView の中央に残ります。
バナーを UITabBar のすぐ上に表示し、ユーザーがドラッグしたときに UITableView がバナーの後ろにスクロールできるようにします。
-(void)layoutForCurrentOrientation:(BOOL)animated
{
CGFloat animationDuration = animated ? 0.2 : 0.0;
// by default content consumes the entire view area
CGRect contentFrame = self.view.bounds;
// the banner still needs to be adjusted further, but this is a reasonable starting point
// the y value will need to be adjusted by half the banner height to get the final position
CGPoint bannerCenter = CGPointMake(CGRectGetMidX(contentFrame), CGRectGetMaxY(contentFrame));
CGFloat bannerHeight = 0.0;
// First, setup the banner's content size and adjustment based on the current orientation
if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
{
banner.currentContentSizeIdentifier = ADBannerContentSizeIdentifier480x32;
bannerHeight = 32.0;
}
else
{
banner.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
bannerHeight = 50.0;
}
// Depending on if the banner has been loaded, we adjust the content frame and banner location
// to accomodate the ad being on or off screen.
// This layout is for an ad at the bottom of the view.
if(banner.bannerLoaded)
{
contentFrame.size.height -= bannerHeight;
bannerCenter.y -= bannerHeight / 2.0;
}
else
{
bannerCenter.y += bannerHeight / 2.0;
}
// And finally animate the changes, running layout for the content view if required.
[UIView animateWithDuration:animationDuration
animations:^{
self.tableView.frame = contentFrame;
[self.tableView layoutIfNeeded];
banner.center = bannerCenter;
}];
}