在我的游戏文件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中编写这些代码,但我不确定它。你能告诉我如何实现它并向我解释它必须写在哪里吗?
答案 0 :(得分:1)
在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()
}