Swift: iAd UITableViewController 位置

Swift: iAd UITableViewController position

我通过拖入 UITableViewController

在故事板中创建了一个 iAd 横幅

在我的 UITableViewController 中,我有这些代码

@IBOutlet var adBannerView: ADBannerView!

ViewDidLoad

self.canDisplayBannerAds = true
self.adBannerView.delegate = self
self.adBannerView.hidden = true

以及这些委托方法

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
    return true
}

func bannerViewDidLoadAd(banner: ADBannerView!) {
    self.adBannerView.hidden = false
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    println("didFailToReceiveAdWithError")
    self.adBannerView.hidden = true
}

有时当 UITableViewLoads 时,它看起来像这样

http://i.stack.imgur.com/P4p1J.png

iAd 将位于 TableView 的底部并随之移动

但有时它只会加载到视图底部的固定位置,这正是我想要的。

如何让iAd固定在底部不随tableview移动?

您的问题是您实际上在这里创建了两个 ADBannerView。一次在 Interface Builder 中,另一个在 viewDidLoadself.canDisplayBannerAds = true。从您的 viewDidLoad 中删除 self.canDisplayBannerAds = true 以更正此问题。

要将您在 Interface Builder 中创建的 ADBannerView 固定到应用程序视图的底部,您需要设置其约束。使用 Bottom Space to: Bottom Layout GuideADBannerView 固定到视图底部,并在 Interface Builder 中将其与 Align Center X to: Superview 对齐。

这将使 ADBannerView 保留在应用程序视图的底部,并在具有不同屏幕尺寸的设备上适当地调整它的大小。

我无法在故事板中添加任何约束。我从情节提要中删除了 iAd 横幅并仅使用:

self.canDisplayBannerAds = true

现在可以正常使用了

我遇到了类似的问题,所以我只是手动编码。当我的代码在 ViewDidLoad 中时没有任何效果,而是我需要的是 ViewWillAppear

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.canDisplayBannerAds = true
    self.banner.delegate = self
}

当然,在 class 的顶部添加 ADBannerViewDelegate,然后是它的方法:

let banner = ADBannerView(adType: .Banner)

func bannerViewDidLoadAd(banner: ADBannerView!) {
    self.view.addSubview(banner)
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    banner.removeFromSuperview()
}