在我的游戏文件GameScene
中,我编写了代码让iAd显示在那里。
func addiAd(){
bannerView = ADBannerView(adType: .Banner)
bannerView.delegate = self
bannerView.hidden = true
bannerView.frame = CGRectOffset(bannerView.frame, 0.0, 0.0)
bannerView.center = CGPointMake(bannerView.center.x,
(view?.bounds.size.height)! - bannerView.frame.size.height/2)
view!.addSubview(bannerView)
print("iAd is working")
}
func bannerViewDidLoadAd(banner: ADBannerView!) {
bannerView.hidden = false
}
func bannerViewActionDidFinish(banner: ADBannerView!) {
bannerView.removeFromSuperview()
}
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
bannerView.hidden = true
}
好吧,它首先看起来可以工作,但并不完美,因为当一个场景过渡到另一个名为 GameOverScene
的游戏场景文件时,我的bannerView
不会消失并永远停留在它出现的地方,直到运行结束。我想停用它。我的代码上面写错了吗?在我的源代码中,我总共想要两个adBanner
视图,分别是GameScene
和GameOverScene
。我对错误的假设是我没有在GameViewController中编写这些代码,但我不确定。你能告诉我如何实现它并解释它必须写在哪里吗?
在 iAd 委托方法中,您可以更改横幅的alpha
属性。例如:
func bannerViewDidLoadAd(banner: ADBannerView!) {
bannerView.alpha = 1.0
}
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
bannerView.alpha = 0.0
}
然后,当您更改场景或想要确保不显示 iAd 横幅时,您可以设置其 hidden
属性。例如:
func hideBanner() {
// Call whenever you don't want the ADBannerView to be on screen
bannerView.hidden = true
}
func showBanner() {
// Call when you want the ADBannerView to be on screen
bannerView.hidden = false
}
这还需要您更新addiAd
功能:将bannerView.hidden = true
更改为bannerView.alpha = 0.0
。
最后,您不应该在此处从Superview中删除iAd横幅:
func bannerViewActionDidFinish(banner: ADBannerView!) {
bannerView.removeFromSuperview()
}