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 中,另一个在 viewDidLoad
中 self.canDisplayBannerAds = true
。从您的 viewDidLoad
中删除 self.canDisplayBannerAds = true
以更正此问题。
要将您在 Interface Builder 中创建的 ADBannerView
固定到应用程序视图的底部,您需要设置其约束。使用 Bottom Space to: Bottom Layout Guide
将 ADBannerView
固定到视图底部,并在 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()
}
我通过拖入 UITableViewController
在我的 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 中,另一个在 viewDidLoad
中 self.canDisplayBannerAds = true
。从您的 viewDidLoad
中删除 self.canDisplayBannerAds = true
以更正此问题。
要将您在 Interface Builder 中创建的 ADBannerView
固定到应用程序视图的底部,您需要设置其约束。使用 Bottom Space to: Bottom Layout Guide
将 ADBannerView
固定到视图底部,并在 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()
}