UBableViewController下面的ADBannerView

我想在UItableViewController中的tableView下面集成iAd横幅。 目标是调整tableview的大小并添加到UIViewController的底部,在这种情况下是一个UITableViewController。 我开始考虑adBannerView是一个UIView所以我编写了下面的代码和UIView,它工作,但当我尝试通过用ADBannerView替换它来发生同样的事情时,它不会发生。 ADBanner出现在正确的位置,但tableViewresize丢失。

有人可以尝试了解原因并帮助我找到更好的解决方案。 没有使用footerView是否可行?

这里的代码。 目前是Utils类中的静态方法。 接下来我将在另一个上下文中使用它,但您应该可以轻松地自己测试它

class ViewControllerUtils { class func showBanner ( viewController:C) { println("*** showBanner isLandscape:\(UIDevice.currentDevice().orientation.isLandscape)") // you don't care about it for the moment. var bannerHeight:CGFloat = 50.0 if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad{ bannerHeight = 66.0 } else if UIDevice.currentDevice().orientation.isLandscape { bannerHeight = 32.0 } println("bannerHeight: \(bannerHeight)") // created a local variable in order to update the original frame var viewFrame = viewController.view.frame UIView.animateWithDuration(1.0, animations: { () -> Void in println("viewFrame \(viewFrame)") viewFrame.size.height -= bannerHeight viewController.view.frame = viewFrame println("viewFrame \(viewFrame)") }) { (ended:Bool) -> Void in var x = CGPoint(x: viewFrame.origin.x, y: viewFrame.origin.y + viewFrame.size.height) var bannerFrame = CGRect(origin: x, size: CGSize(width: viewFrame.size.width, height: bannerHeight)) var container = UIView(frame: bannerFrame) container.backgroundColor = UIColor.redColor() //without this line it works like expected. //with it tableview resizing is not applied anymore container.addSubview(ADBannerView(frame: CGRect(origin: CGPointZero, size: CGSize(width: viewFrame.size.width, height: bannerHeight)))) viewController.view.superview?.addSubview(container) } } } 

如果您需要的只是TableViewController底部的横幅,您可以使用预构建的行为,将canDisplayBannerAds设置为true如下所示:

 import UIKit import iAd class MainViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.canDisplayBannerAds = true } }