我的代码出现问题。我正在尝试以编程方式在Xcode中添加iAd到我的视图。有几次它随机工作,我再次运行它而不更改任何代码,它不再工作。在这几次它随机工作,当我切换到另一个视图,然后回到iAd所在的那个,iAd只是一个空的iAd帧,没有显示它应该是动画。它根本就没有加载iAd。请帮忙!代码:
import UIKit
import Foundation
import iAd
class ViewController: UIViewController, ADBannerViewDelegate {
//variables*******************************************
var adBannerView = ADBannerView(frame: CGRect.zeroRect)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.canDisplayBannerAds = true
loadAds()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//iAd**************************************************
func loadAds()
{
adBannerView = ADBannerView(frame: CGRect.zeroRect)
adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height - adBannerView.frame.size.height / 2 - 50)
adBannerView.delegate = self
adBannerView.hidden = true
view.addSubview(adBannerView)
}
func bannerViewWillLoadAd(banner: ADBannerView!)
{
println("sort of working1")
}
func bannerViewDidLoadAd(banner: ADBannerView!)
{
adBannerView.hidden = false
println("sort of working2")
}
func bannerViewActionDidFinish(banner: ADBannerView!)
{
println("sort of working3")
}
func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool
{
println("sort of working4")
return true
}
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!)
{
adBannerView.hidden = true
println("error1")
}
}
2015年1月28日更新: 不知何故,iAds现在可以在不改变代码的情况下工作,但我遇到了另一个问题。在我离开iAd所在的视图后,它变成一个空白的白色框架,框架的底角有一个小的iAd标志。另外,另一个大问题是它使用iAd使视图的标签栏变暗。
答案 0 :(得分:0)
即使是println也没有用? iAds并不总是显示,取决于与iAd服务器的连接,这就是你应该实现didFailToReceiveAdWithError并隐藏横幅的原因,以防由于某些问题而没有从服务器传来信息。
答案 1 :(得分:0)
如果您使用自动iAd演示文稿,则在self.canDisplayBannerAds = true
之后不需要执行任何其他操作。当iAd可用时,您的视图控制器将自动缩小并触发自动布局。 iAd将在底部显示。
因此,您的示例代码可以是:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.canDisplayBannerAds = true
}
如果您需要不同的行为,这是一个简单的iAd example。它使用单个ADBannerView
并可以将其显示在视图的顶部。
无论如何,考虑手动实例化ADBannerView
的正确方法是:ADBannerView(adType: ADAdType.Banner)